Cod sursa(job #2605503)

Utilizator matthriscuMatt . matthriscu Data 25 aprilie 2020 12:06:46
Problema Farfurii Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
    int n, k, i, j = 1, x, maxi, minj, temp,
    v[100005] {}, rez[100005] {}, poz[100005];
    freopen("farfurii.in", "r", stdin);
    freopen("farfurii.out", "w", stdout);
    scanf("%d%d", &n, &k);
    for(i = 1; i <= n; ++i) {
        rez[i] = i;
        poz[i] = i;
    }

    while(v[j] < k)
        v[++j] = v[j-1] + j-1;
    k -= v[j-1];

    for(i = n-j+2, x = n; i <= n; ++i, --x) {
        rez[i] = x;
        poz[x] = i;
    }
    //for(i = 1; i <= n; ++i)
        //printf("%d ", rez[i]);
    while(k--)
        for(i = n; i >= 1; --i)
            for(j = i+1; j <= n; ++j)
                if(poz[i] < poz[j]) {
                    swap(rez[poz[i]], rez[poz[j]]);
                    swap(poz[rez[poz[i]]], poz[rez[poz[j]]]);
                    i = 0, j = n+1;
                }

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