Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- int col,row,bs=0,bn=0,ps=0,pn=0;
- char map[100][100],b[10000],p[10000];
- int min(int a,int b){
- return a<b? a:b;
- }
- int max(int a,int b){
- return a>b? a:b;
- }
- void dig(int dc){
- int rdeep,trd,mrd;
- rdeep=row-1;
- while(map[rdeep][dc]=='_'&&rdeep>=0) rdeep--;
- if(rdeep<0) return;
- switch(map[rdeep][dc]){
- case 'G':
- case 'D':
- b[bn++]=map[rdeep][dc];
- map[rdeep][dc]='_';
- return;
- case 'B':
- for(int i=max(0,dc-1);i<min(col,dc+2);i++) for(int j=max(0,rdeep-1);j<min(rdeep+2,row);j++) map[j][i]='_';
- return;
- case 'F':
- case 'M':
- p[pn++]=map[rdeep][dc];
- map[rdeep][dc]='_';
- return;
- case 'C':
- map[rdeep][dc]='_';
- if(bs==bn) return;
- mrd=0;
- for(int i=max(0,dc-2);i<min(col,dc+3);i++){
- trd=row-1;
- while(map[trd][i]=='_'&&trd>=0) trd--;
- if(trd>mrd) mrd=trd;
- }
- for(int i=max(0,dc-2);i<min(col,dc+3);i++) for(int j=mrd+1;j<mrd+4;j++) map[j][i]=b[bn-1];
- row=max(row,mrd+4);
- return;
- case 'P':
- while(bs<bn&&b[bn-1]=='G') bn--;
- map[rdeep][dc]='_';
- return;
- default:
- return;
- }
- }
- void solve(){
- char ind[4];
- int dc;
- scanf("%s",ind);
- if(ind[0]=='D'){
- scanf("%d",&dc);
- dig(dc);
- }else if(ps<pn){
- if(p[ps]=='F'){
- int mrd=0,trd;
- for(int i=0;i<col;i++){
- trd=row-1;
- while(map[trd][i]=='_'&&trd>=0) trd--;
- if(trd>mrd) mrd=trd;
- }
- printf("MINE LEVEL:%d\n",mrd+1);
- for(int i=0;i<col;i++) printf("%c ",map[mrd][i]);
- printf("\n");
- }else{
- for(int i=0;i<col;i++) dig(i);
- }
- ps++;
- }
- return;
- }
- int main(){
- int testcase,check=0,md=-1,td;
- char ind[2];
- memset(map,'_',10000*sizeof(char));
- scanf("%d%d%d",&col,&row,&testcase);
- for(int i=row-1;i>=0;i--) for(int j=0;j<col;j++) scanf("%s",ind),map[i][j]=ind[0];
- while(testcase--) solve();
- printf("FINAL BAG:\n");
- for(int i=bs;i<bn;i++) printf("%c ",b[i]);
- printf("\nFINAL MAP:\n");
- for(int i=0;i<col;i++){
- td=row-1;
- while(map[td][i]=='_'&&td>=0) td--;
- if(td>md) md=td;
- }
- for(int i=md;i>=0;i--){
- for(int j=0;j<col;j++) printf("%c ",map[i][j]);
- printf("\n");
- }
- return 0;
- }
- /*
- CS2351_DS_24Spring_HW1
- https://acm.cs.nthu.edu.tw/contest/2965/
- NTHU OJ 14241 - Gold Miner
- AC code
- 2024 March 21
- */
Advertisement
Add Comment
Please, Sign In to add comment