Submission #1217778

#TimeUsernameProblemLanguageResultExecution timeMemory
1217778simplemind_31Tetris (COCI17_tetris)C++20
80 / 80
0 ms528 KiB
#include <bits/stdc++.h>
using namespace std;
int n,m,con[5];
char mat[20][20];
void dfs(int i,int j){
    if(i<=0 || i>n || j<0 || j>m){
        return;
    }
    char x=mat[i][j];
    mat[i][j]='.';
    if(mat[i][j-1]==x){
        dfs(i,j-1);
    }
    if(mat[i][j+1]==x){
        dfs(i,j+1);
    }
    if(mat[i-1][j]==x){
        dfs(i-1,j);
    }
    if(mat[i+1][j]==x){
        dfs(i+1,j);
    }
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin >> n >> m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin >> mat[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(mat[i][j]!='.'){
                if(mat[i][j]==mat[i+1][j] && mat[i][j]==mat[i][j+1] && mat[i][j]==mat[i+1][j+1]){
                    con[0]++;
                    mat[i][j]=mat[i+1][j]=mat[i][j+1]=mat[i+1][j+1]='.';
                }else if(mat[i][j]==mat[i][j+1] && mat[i][j]==mat[i][j+2] && mat[i][j]==mat[i][j+3]){
                    mat[i][j]=mat[i][j+1]=mat[i][j+2]=mat[i][j+3]='.';
                    con[1]++;
                }else if(mat[i][j]==mat[i+1][j] && mat[i][j]==mat[i+2][j] && mat[i][j]==mat[i+3][j]){
                    mat[i][j]=mat[i+1][j]=mat[i+2][j]=mat[i+3][j]='.';
                    con[1]++;
                }else if(mat[i][j]==mat[i][j+1] && mat[i][j]==mat[i+1][j+1] && mat[i][j]==mat[i+1][j+2]){
                    mat[i][j]=mat[i][j+1]=mat[i+1][j+1]=mat[i+1][j+2]='.';
                    con[3]++;
                }else if(mat[i][j]==mat[i+1][j] && mat[i][j]==mat[i][j+1] && mat[i][j]==mat[i+1][j-1]){
                    mat[i][j]=mat[i+1][j]=mat[i][j+1]=mat[i+1][j-1]='.';
                    con[2]++;
                }else if(mat[i][j]==mat[i+1][j] && mat[i][j]==mat[i+1][j-1] && mat[i][j]==mat[i+2][j-1]){
                    mat[i][j]=mat[i+1][j]=mat[i+1][j-1]=mat[i+2][j-1]='.';
                    con[3]++;
                }else if(mat[i][j]==mat[i+1][j] && mat[i][j]==mat[i+1][j+1] && mat[i][j]==mat[i+2][j+1]){
                    mat[i][j]=mat[i+1][j]=mat[i+1][j+1]=mat[i+2][j+1]='.';
                    con[2]++;
                }else{
                    con[4]++;
                    dfs(i,j);
                }
            }
        }
    }
    for(int i=0;i<5;i++){
        cout << con[i] << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...