Cod sursa(job #2430987)

Utilizator bluestorm57Vasile T bluestorm57 Data 17 iunie 2019 16:33:44
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("farfurii.in");
ofstream g("farfurii.out");

const int NMAX = 100005;
int v[NMAX];
long long int n,k,suma,t;

int main(){
    int i;
    f >> n >> k;
    t = 0;
    while(suma < k){
        t++;
        suma += t;
    }
    if(k == 0){
        for(i = 1 ; i <= n ; i++)
            g << i << " ";
    }else
        if(suma == k){
            for(i = 1 ; i <= n - t - 1 ; i++)
                g << i << " ";

            long long int cn = n;
            for(i = n - t ; i <= n ; i++){
                g << cn << " ";
                cn--;
            }
        }else{
            suma -= t;
            long long int dif = k - suma;
            for(i = 1 ; i < n - t ; i++)
                v[i] = i;
            int cnt = n - t;
            for(int i = n; i > n - t; i--){
                if(n - i != dif){
                    v[i] = cnt;
                    cnt++;
                } else {
                    v[n - t] = cnt;
                    cnt++;
                    v[i] = cnt;
                    cnt++;
                }
            }
            for(i = 1 ; i <= n ; i++)
                g << v[i] << " ";

        }
    return 0;
}