Pagini recente » Cod sursa (job #3292740) | Cod sursa (job #2798740) | Cod sursa (job #1680468) | Cod sursa (job #139670) | Cod sursa (job #173808)
Cod sursa(job #173808)
#include<cstdio>
#include<vector>
using namespace std;
#define INPUT "farfurii.in"
#define OUTPUT "farfurii.out"
#define NMAX 100001
#define LL long long
#define pb push_back
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
LL N, K;
vector<LL> final;
void readValues()
{
fscanf(fin, "%lld %lld", &N, &K);
}
void printSolution()
{
for(LL i = 0; i < N; ++i)
fprintf(fout, "%lld ", final[ i ]);
fprintf(fout, "\n");
}
void solveFunction()
{
LL cont = 0, prod = 1, rest, nrNum, maxim, scad;
while(prod <= K)
{
prod = cont * (cont + 1) / 2;
++cont;
}
--cont;
prod = (cont - 1) * cont / 2;
rest = K - prod;
if(!rest)
{
nrNum = N - cont;
for(LL i = 1; i <= nrNum; ++i)
final.pb(i);
maxim = N;
for(LL i = nrNum + 1; i <= N; ++i)
{
final.pb(maxim);
--maxim;
}
printSolution();
}
else
{
++cont;
nrNum = N - cont + 1;
for(LL i = 1; i < nrNum; ++i)
final.pb(i);
scad = cont - rest;
final.pb( N - scad + 1);
maxim = N;
for(LL i = nrNum + 1; i <= nrNum + scad - 1; ++i)
{
final.pb(maxim);
--maxim;
}
maxim = N - scad;
for(LL i = nrNum + scad; i <= N; ++i)
{
final.pb(maxim);
--maxim;
}
printSolution();
}
}
int main()
{
readValues();
solveFunction();
fclose(fin);
fclose(fout);
return 0;
}