#51086: 想請問一下,我這樣20%是哪裡有錯呢? 謝謝


13082@nnjh.kl.edu.tw (鄭翔璘)

學校 : 不指定學校
編號 : 290078
來源 : [210.240.31.37]
最後登入時間 :
2025-10-03 16:40:57

#include<bits/stdc++.h>
using namespace std;
int main(){
    int r,c,n;
    cin >> r >> c >> n;
    int room[45][65],p=0;
    for(int i=0;i<45;i++){
        for(int j=0;j<65;j++){
            room[i][j]=1;
        }
    }
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            room[i][j]=0;
        }
    }
    int a,b=0,w[45];
    for(int t=0;t<45;t++){
        w[t]=1;
    }
    for(int t=0;t<n;t++){
        string s;b=0;
        cin >> s >> a ;
        if(s=="A"){
            int l=a+1;
            b=0;
            for(int h=w[l];h<=c+1;h++){
                
                if((room[l][h]==0)&&(room[l+1][h]==0)&&(room[l+2][h]==0)&&(room[l+3][h]==0)){
                    room[l][h]=room[l+1][h]=room[l+2][h]=room[l+3][h]=1;
                    b++;
                    w[l]=w[l+1]=w[l+2]=w[l+3]=h+1;
                    break;
                }
                
            }
            if(b==0){p++;}
        }
        if(s=="B"){
            int l=a+1;
            b=0;
            for(int h=w[l];h+2<=c+1;h++){
               
                if((room[l][h]==0)&&(room[l][h+1]==0)&&(room[l][h+2]==0)){
                    room[l][h]=room[l][h+1]=room[l][h+2]=1;
                    b++;
                    w[l]=h+3;
                    break;
                }
                
            }
            if(b==0){p++;}
        }
        if(s=="C"){int l=a+1;
            b=0;
            for(int h=w[l];h+1<=c+1;h++){
               
                if((room[l][h]==0)&&(room[l][h+1]==0)&&(room[l+1][h]==0)&&(room[l+1][h+1]==0)){
                    room[l][h]=room[l][h+1]=room[l+1][h+1]=room[l+1][h]=1;
                    b++;
                    w[l]=w[l+1]=h+2;
                    break;
                }
                
            }
            if(b==0){p++;}
        }
        if(s=="D"){
           int l=a+1;
                b=0;
                for(int h=w[l];h+2<=c+1;h++){
                   
                    if((room[l][h]==0)&&(room[l][h+1]==0)&&(room[l][h+2]==0)&&(room[l-1][h+2]==0)){
                       room[l][h]=room[l][h+1]=room[l][h+2]=room[l-1][h+2]=1;
                       b++;
                       w[l]=w[l-1]=h+3;
                       break;
                    }
                    
                }
            if(b==0){p++;}
        }
        if(s=="E"){
            int l=a+2;
            b=0;
            for(int h=w[l];(h+1<=c+1)&&(l-1>=1);h++){
               
                if((room[l][h]==0)&&(room[l][h+1]==0)&&(room[l+1][h]==0)&&(room[l+1][h+1]==0)&&(room[l-1][h+1]==0)){
                    room[l][h]=room[l][h+1]=room[l+1][h+1]=room[l+1][h]=room[l-1][h+1]=1;
                    b++;
                    w[l]=w[l+1]=w[l-1]=h+2;
                    break;
                }
                
            }
            if(b==0){p++;}
        }
    }
    int blank = 0;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            if(room[i][j]==0){
                blank++;
            }
        }
    }
    cout << blank << " " << p;
}