Pagini recente »
Cod sursă (job #116156)
|
oli_scoala_7_2014
|
Cod sursă (job #290694)
|
Atașamentele paginii Clasament oji_2017_9
|
Cod sursă (job #317610)
Cod sursă (job
#317610)
#include<stdio.h>
using namespace std;
#define MAXN 10001
int stiva[MAXN];
char sw[MAXN];
int vf;
inline int ok(int x, int k1, int k2){
int i;
i=vf;
while(i>0 && k2>0 && x>stiva[i]){
k1+=sw[i];
k2--;
i--;
}
if(k1>0)
return 1;
return 0;
}
//k1 rotiri
//k2 eliminari
int main(){
FILE*fin=fopen("domino.in", "r");
FILE*fout=fopen("domino.out", "w");
int n, k1, k2, i, a, b, c, nr, fl, x;
fscanf(fin, "%d%d%d", &n, &k1, &k2);
vf=0;
for(i=1; i<=n; i++){
fscanf(fin, "%d%d", &a, &b);
x=a*10+b; fl=0;
if(b>a && (ok(x, k1, k2)==1)){
x=b*10+a;
k1--;
fl=1;
}
// printf("%d\n", x);
while(vf>0 && k2>0 && x>stiva[vf]){
k1+=sw[vf];
k2--;
vf--;
}
vf++; stiva[vf]=x; sw[vf]=fl;
}
for(i=1; i<=vf-k2; i++)
fprintf(fout, "%d", stiva[i]);
return 0;
}