Cod sursa(job #2605500)

Utilizator matthriscuMatt . matthriscu Data 25 aprilie 2020 11:52:23
Problema Farfurii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 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 = j-1, x = n; i <= n; ++i, --x) {
        rez[i] = x;
        poz[x] = i;
    }
    while(k) {
        for(i = 1; i <= n; ++i)
            for(j = n; j >= 1; --j)
                if(poz[i] < poz[j] && i < j) {
                    maxi = poz[i];
                    minj = poz[j];
                }

        swap(rez[maxi], rez[minj]);
        swap(poz[rez[maxi]], poz[rez[minj]]);
        --k;
    }
    for(i = 1; i <= n; ++i)
        printf("%d ", rez[i]);
}