Cod sursa(job #469970)

Utilizator hendrikHendrik Lai hendrik Data 10 iulie 2010 07:17:53
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

typedef long long ll;
#define N 100010
int n,now,pt;
ll k,sisa;
bool ok=0,used[N];

void open(){
	freopen("farfurii.in","r",stdin);
	freopen("farfurii.out","w",stdout);
}

int main(){
	open();
	scanf("%d%lld",&n,&k);
	now=n;
	for (int i=1;i<=n;i++){
		if ((ll)(now-1)*(now-2)/2>=k){
			if (ok) printf(" ");
			ok=1;
			now--;
			pt=i;
			used[i]=1;
			printf("%d",i);
		}
		else break;
	}
	if (now){
		pt++;
		if (ok) printf(" ");
		ok=1;
		sisa=k-(now-1)*(now-2)/2;
		printf("%d",pt+sisa);
		used[pt+sisa]=1;
		for (int i=n;i>=1;i--){
			if (used[i]) continue;
			if (ok) printf(" ");
			ok=1;
			printf("%d",i);
		}
		printf("\n");
	}
	//system("pause");
	return 0;
}