Cod sursa(job #238427)

Utilizator razyelxrazyelx razyelx Data 2 ianuarie 2009 03:07:59
Problema Farfurii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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;

	   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;

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


    }

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


    return 0;
}