Cod sursa(job #4715)

Utilizator snaked31Stanica Andrei snaked31 Data 6 ianuarie 2007 12:59:53
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#include <math.h>

#define nm 100010

long long n, k, a[nm], m, i, j;

void read()

{
	scanf("%lld %lld", &n, &k);
}


void solve()

{
    m = 2 * k;
    m = (long long)sqrt(m*1.0);
    if (m*(m+1)/2 <= k)
    	m ++;

    if (k > (m * (m-1) / 2))
    {
        for (i=1; i<=n-m-1; i++)
        	a[i] = i;
        a[n-m] = n-(m*(m+1)/2 - k);
        for (i=n, j = n-m+1; i>=n-m; i--, j++)
        	if (i != n-(m*(m+1)/2 - k))
        		a[j] = i;
            else
            	j --;
    }
    else
    {
        for (i=1; i<=n-m; i++)
        	a[i] = i;
        for (i=n, j = n-m+1; i>n-m; i--, j++)
        	a[j] = i;
    }
}


void write()

{
	for (i=1; i<=n; i++)
		printf("%lld ", a[i]);
    printf("\n");
}


int main()

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

    read();
    solve();
    write();

    fclose(stdin);
    fclose(stdout);

	return 0;
}