Cod sursa(job #799980)

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

using namespace std;

typedef long long int64;

const int N = 100005;

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

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

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

    for (int i = 1; i <= n; ++i) {
        inv = 1LL * (n - i) * (n - i - 1) / 2LL;
        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]);
}