Pagini recente »
Cod sursă (job #521770)
|
oji_1
|
Rating Petru Titarca (Petru_Titarca)
|
Rating Mitu Cristina (mitumitucristina)
|
Cod sursă (job #799828)
Cod sursă (job
#799828)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 10000
int v[MAXN];
int next[MAXN];
int max(int a, int b){
return a > b ? a : b;
}
int rot(int a){
return max(((a % 10) * 10 + a/10),a);
}
int main()
{
FILE*fin;
FILE*fout;
fin = fopen("domino.in","r");
fout = fopen("domino.out","w");
int n,k1,k2,i,a,b,e,st,ul,ok;
fscanf(fin,"%d%d%d",&n,&k1,&k2);
for(i = 0 ; i < n; i++ ){
fscanf(fin,"%d%d",&a,&b);
v[i] = a*10+b;
next[i] = i+1;
}
st = 0;
do{
e = 0;
for( i = st; i < n; i = next[i] ){
ok = 0;
if((v[i] % 10) > (v[i] / 10) && k1 > 0){
v[i] = rot(v[i]);
k1--;
ok = 1;
}
//printf("v[i]:%d next[i]:%d rot(next[i]):%d k1:%d k2:%d \n",v[i],v[next[i]],rot(v[next[i]]),k1,k2);
if(v[i] < v[next[i]] && k2 > 0 ){
if(i != st) next[ul] = next[i];
else st = next[i];
k2--;
k1 += ok * 1;
e++;
}
else if(v[i] < rot(v[next[i]]) && k2 > 0 && k1 > (0 - ok)){
if(i != st) next[ul] = next[i];
else st = next[i];
k1 += ok * 1;
e++;
}
ul = i;
}
}while(e > 0);
for(i = st; i < n; i = next[i] )
fprintf(fout,"%d",v[i]);
return 0;
}