Всего за k ходов можно раздать максимум k * (k + 1) / 2 карт (школа, учебник математики).
2 * n = k * k + k
k * k + k - 2 * n = 0
k = (sqrt(1 + 8 * n) - 1) / 2 cin >> n;
int m, g, k = int(ceil((sqrt(1 + 8 * n) - 1) / 2));
if (k % 2) {
g = (2 + k - k % 2) * (k - 1) / 4;
m = n - g;
} else {
m = (k + k % 2) * k / 4;
g = n - m;
}
cout