Cod sursa(job #1483358)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 9 septembrie 2015 09:03:12
Problema Farfurii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
int n,t,p[100001],r,l;
long long k,i;
int main() {
	freopen("farfurii.in","r",stdin),freopen("farfurii.out","w",stdout),scanf("%d%lld",&n,&k);
	for(i=1;i<=n&&!r&&!l;i++)
	if(i*(i-1)/2==k)
      	r=i;
	else if(i*(i-1)/2<k&&k<i*(i+1)/2)
        l=i;
	if(r) {
		for(i=1;i<=n-r;i++)
            p[i]=i;
      	for(t=n,i=n-r+1;i<=n;i++)
            p[i]=t--;
	} else {
		for(i=1;i<n-l;i++)
            p[i]=i;
      	p[n-l]=n+k-l*(l+1)/2;
      	for(t=n,i=n-l+1;i<=n;p[i++]=t--)
		if(t==p[n-l])
            t--;
	}
	for(i=1;i<=n;i++)
      	printf("%d ",p[i]);
}