Cod sursa(job #238428)

Utilizator razyelxrazyelx razyelx Data 2 ianuarie 2009 04:07:23
Problema Farfurii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 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 n,k,i,kk,aux,ultim;
    fscanf(in,"%ld %ld",&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]){

	   /*aux = bb[i];
	   bb[i] = bb[i-1];
	   bb[i-1] = aux;*/

	   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]){

	     /*aux   = ff[i];
	     ff[i] = ff[i+1];
	     ff[i+1] = aux;*/

	     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;
}