Cod sursa(job #1070291)

Utilizator vld7Campeanu Vlad vld7 Data 31 decembrie 2013 16:29:19
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.62 kb
#include <cstdio>
#include <cmath>

using namespace std;

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

const int MAX_N = 100005;

int N, sol[MAX_N];
long long K;

int main()
{
	fscanf (f, "%d %lld", &N, &K);
	
	double c = (1 + sqrt(1 + 8 * (double)K)) / 2;
	long long m = (long long)c;
	
	for (int i = 1; i <= N - m; i++)
		sol[i] = i;
	for (int i = N - m + 1, aux = N; i <= N; i++)
		sol[i] = aux--;
	
	K -= m * (m - 1) / 2;
	for (int i = N; i && K; i--, K--) {
		sol[i]--;
		sol[N - m]++;
	}
	
	for (int i = 1; i <= N; i++)
		fprintf (g, "%d ", sol[i]);
	
	return 0;
}