Cod sursa(job #799969)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 20 octombrie 2012 15:06:51
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>

using namespace std;

const int N = 100005;

int n, k, K, inv, last;
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 = (n - i) * (n - i - 1) / 2;
        if (inv < k) {
            sol[i] = i + k - inv;
            pus[i + k - inv] = true;
            last = i;
            break;
        }
        else {
            sol[i] = i;
            pus[i] = true;
        }
        last = i;
    }
    
    for (int i = n; i > 0; --i)
        if (!pus[i])
            sol[++last] = i;
    
    for (int i = 1; i <= n; ++i)
        printf("%d ", sol[i]);
}