Pagini recente » Cod sursa (job #1748875) | Cod sursa (job #1792544) | Cod sursa (job #2496627) | Cod sursa (job #1615466) | Cod sursa (job #520955)
Cod sursa(job #520955)
//Daca k e de forma M*(M-1)/2 -> 1, 2, 3, ... N-M, N, N-1, N-2, ... N-M+1
//altfel -> 1, 2, 3, ... N-M-1, N, N-1, N-2, ... N-M
#include <iostream>
#include <fstream>
#include <cassert>
#define LL long long
using namespace std;
LL n,m,k,i;
int main()
{
ifstream f("farfurii.in");
ofstream g("farfurii.out");
f>>n>>k;
LL ls=1,ld=n,m;
for(;;) {
m=(ls+ld)/2;
if(ls==ld) {
m=ls;
break;
}
if(1LL*m*(m-1)/2<k) ls=m+1;
else ld=m;
}
if(1LL*m*(m-1)/2==k) {
for(i=1;i<=n-m; ++i) g<<i<<' ';
for(i=0;i<m; ++i) g<<n-i<<' ';
}else {
LL x=1LL*m*(m-1)/2-k;
for(i=1;i<=n-m;++i) g<<i<<' ';
g<<n-x<<' ';
for(i=0;i<m;i++) if(i!=x) g<<n-i<<' ';
g<<'\n';
}
return 0;
}