Cod sursa(job #4720)

Utilizator vmaneavmanea vmanea Data 6 ianuarie 2007 13:27:42
Problema Farfurii Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>


int N,K,MAX, POZM, POZm, aux;

int i;

int S[100005],POZ[100005];

int main()

{

 freopen("farfurii.in", "r", stdin);

 freopen("farfurii.out", "w", stdout);


 scanf("%d %d", &N, &K);


 for (i=1;i<=N;i++)

 {

  S[i]=N-i+1;

  POZ[N-i+1]=i;

  if (i*(i-1)/2<=K)

   MAX=i;

 }

 for (i=1;i<=MAX;i++)

 {

  S[i]=i+S[MAX+1];

  POZ[i+S[MAX+1]]=i;

 }

 K-=MAX*(MAX-1)/2;

 for (;K;K--)

 {

  POZM=POZ[1+S[MAX+1]];


  aux=S[MAX+1];

  S[MAX+1]=S[POZM];

  S[POZM]=aux;


  POZ[S[MAX+1]]=MAX+1;

  POZ[S[MAX+1]-1]=POZM;

 }

 for (i=N;i>1;i--)

  printf("%d ", S[i]);

 printf("%d\n", S[i]);

 return 0;

}