Cod sursa(job #799959)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 20 octombrie 2012 14:50:37
Problema Farfurii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>

using namespace std;

const int N = 100005;

int n, k, K, inv;
int sol[N];
bool pus[N];

int main()
{
    freopen ("farfurii.in", "r", stdin);
    freopen ("farfurii.out", "w", stdout);

    scanf("%d %d", &n, &K);

    for (int i = 1; i <= n; ++i) {
        inv = 0;
        for (int j = n; j >= 1; --j) {
            k = K - (inv * (inv - 1)) / 2;
            if (!pus[j] && ((n - i - 1) * (n - i)) / 2 >= k) {
                pus[j] = 1;
                pus[sol[i]] = 0;
                sol[i] = j;
                continue;
            }
            if (pus[j])
                ++inv;
        }
    }

    for (int i = 1; i <= n; ++i)
        printf("%d ", sol[i]);
}