Cod sursa(job #238534)

Utilizator razyelxrazyelx razyelx Data 2 ianuarie 2009 14:54:37
Problema Farfurii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
FILE *in  = fopen("farfurii.in","r");
FILE *out = fopen("farfurii.out","w");

long ff[100001];
long bb[100001];

int main(){
    long long n,k,i,kk,m,ultim;
    fscanf(in,"%lld %lld",&n,&k);

    for(i=1;i<=n;i++)
       ff[i] = bb[i] = i;
    kk = k;

    i=n;ultim=n;

    while(kk && i>1)

	 if(bb[i] > bb[i-1]){

	   bb[i]^=bb[i-1]^=bb[i]^=bb[i-1];

	   kk--;

	   if(bb[i-1] == ff[n])ultim = i-1;

	   i++;

	 } else i--;

    kk = k;i=ultim;

    while(kk){

	 if(kk && i == n)i = ultim;

	 if(ff[i] < ff[i+1]){

	     ff[i]^=ff[i+1]^=ff[i]^=ff[i+1];

	     kk--;
	     i++;
	 } else i--;


    }

    for(i=1;i<=n;i++)
       fprintf(out,"%ld ",ff[i]);


    return 0;
}