Pagini recente » Cod sursa (job #1489255) | Arhiva de probleme | Cod sursa (job #2028087) | Istoria paginii utilizator/nnelutu | Cod sursa (job #520946)
Cod sursa(job #520946)
//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>
#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(;ls<ld;) {
m=(ls+ld)>>1;
if(m*(m-1)/2<k) ls=m+1;
else ld=m;
}
if(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=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<<' ';
}
return 0;
}