Cod sursa(job #1425237)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 27 aprilie 2015 02:41:19
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("farfurii.in");
ofstream fout("farfurii.out");

const int NMax = 100005;
int v[NMax];

int main()
{
    long long int n,k,sum = 0,t;
    fin >> n >> k;
    t = 0;
    while(sum < k){
        t++;
        sum += t;
    }
    if(k == 0){
        for(int i = 1; i<= n; i++){
            fout << i << " ";
        }
    } else {
        if(sum == k){
            for(int i = 1; i <= n - t - 1; i++){
                fout << i << " ";
            }
            long long int cn = n;
            for(int i = n - t; i <= n; i++){
                fout << cn << " ";
                cn--;
            }
        } else {
            sum -= t;
            long long int dif = k - sum;
            for(int i = 1; i <= n - t - 1; 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(int i = 1; i <= n; i++){
                fout << v[i] << " ";
            }
        }
    }
    return 0;
}