Pagini recente »
2020-02-06-clasa-7-tema-20-optionala
|
Istoria paginii runda/simulare47
|
Cod sursă (job #204155)
|
Cod sursă (job #799829)
|
Cod sursă (job #317613)
Cod sursă (job
#317613)
#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, j, 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(b*10+a, 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;
// if(fl==0){
// j=vf-1;
// while(j>0 && x==stiva[j] && sw[j]==1)
// j--;
// j++;
// if(stiva[j]==x && sw[j]==1){
// sw[j]=0;
// sw[vf]=1;
// }
// }
}
for(i=1; i<=vf-k2; i++)
fprintf(fout, "%d", stiva[i]);
return 0;
}