Cod sursa(job #2957403)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 22 decembrie 2022 15:53:05
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
//Ilie Dumitru
#include<cstdio>
const int NMAX=100005;

FILE *f=fopen("farfurii.in", "r");
FILE *g=fopen("farfurii.out", "w");

long long int bs(long long int K)
{
	long long int l=-1, r=NMAX, m;
	while(r-l>1)
	{
		m=l+((r-l)>>1);
		if(m*(m-1)/2<=K)
			l=m;
		else
			r=m;
	}
	return l;
}

void solve(long long int N, long long int K)
{
	int i, spec, n;
	n=bs(K);
	spec=N-n+(K-n*(n-1)/2);
	n=N-n-1;
	for(i=1;i<=n;++i)
		fprintf(g, "%d ", i);
	if(spec)
		fprintf(g, "%d ", spec);
	for(i=N;i>spec;--i)
		fprintf(g, "%d ", i);
	for(--i;i>n;--i)
		fprintf(g, "%d ", i);
}

int main()
{
	int N;
	long long int K;
	fscanf(f, "%d%lld", &N, &K);
	solve(N, K);
	fclose(f);
	fclose(g);
	return 0;
}