Cod sursa(job #2847684)

Utilizator Cezar211Popoveniuc Cezar Cezar211 Data 11 februarie 2022 11:27:39
Problema Farfurii Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

#define ll long long
using namespace std;

void fast() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
}

int N;
ll K;
int v[30005];

int main() {
    fast();
    ifstream fin("farfurii.in");
    fin >> N >> K;
    for (int i = 1; i <= N; i++)
        v[i] = N - i + 1;
    K = (long long) N * ((long long) N - 1LL) / 2 - K;
    int crtUnsorted = 1;
    int lastToMove = -1, whereToMove = -1;
    while (K) {
        if (N - crtUnsorted <= K) {
            K -= N - crtUnsorted;
            crtUnsorted++;
        } else {
            lastToMove = (int) crtUnsorted + K;
            whereToMove = crtUnsorted;
            break;
        }
    }
    ofstream fout ("farfurii.out");
    for (int i = 1; i < crtUnsorted; i++)
        fout << i << ' ';
    if (lastToMove != -1)
        fout << lastToMove << ' ';
    for (int i = N; i >= 1; i--)
        if (i >= crtUnsorted && i != lastToMove)
            fout << i << ' ';
}