Cod sursa(job #1217599)

Utilizator smaraldaSmaranda Dinu smaralda Data 7 august 2014 19:41:18
Problema Farfurii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<math.h>

#define LL long long

const int NMAX = 1e5;

int f[NMAX + 5], p[NMAX + 5];

int main() {
    freopen("farfurii.in", "r", stdin);
    freopen("farfurii.out", "w", stdout);
    int n, k, i, j, pos, dif;

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

    pos = 1;
    while((LL)pos * ((LL)pos - 1) / 2 < k)
        ++ pos;
    
    dif = k - ((LL)pos - 1) * ((LL)pos - 2) / 2;
    pos = n - pos + 1;
    for(i = 1; i < pos; ++ i)
        p[i] = i;

    p[pos] = pos + dif;
    k = n;
    for(i = pos + 1; i <= n; ++ i, -- k) {
        if(k == p[pos])
            -- k;
        p[i] = k;
    }
     
    for(i = 1; i <= n; ++ i)
        printf("%d ", p[i]);
    return 0;
}