Submission #151898

#TimeUsernameProblemLanguageResultExecution timeMemory
151898phillipTetris (COCI17_tetris)C++14
48 / 80
2 ms380 KiB
#include <bits/stdc++.h> using namespace std; char g[20][20]; bool vis[20][20]; int f[5],n,m; bool isc(int x,int y) { char c=g[x][y]; for(int i=x;i<x+4;i++) { if(g[i][y]!=c)break; if(i==x+3) { f[1]++; for(int i=x;i<x+4;i++)vis[i][y]=1; return true; } } for(int i=y;i<y+4;i++) { if(g[x][i]!=c)break; if(i==y+3) { f[1]++; for(int i=y;i<y+4;i++)vis[x][i]=1; return true; } } return false; } bool issq(int x,int y) { char c=g[x][y]; if(g[x+1][y]==c&&g[x][y+1]==c&&g[x+1][y+1]==c) { f[0]++; vis[x][y]=1;vis[x+1][y]=1;vis[x][y+1]=1;vis[x+1][y+1]=1; return true; } return false; } queue<pair<int,int> >q; int main() { for(int i=0;i<20;i++) { for(int j=0;j<20;j++)g[i][j]='.'; } cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>g[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(g[i][j]=='.')continue; if(vis[i][j])continue; //cout<<i<<" "<<j<<"\n"; if(isc(i,j))continue; if(issq(i,j))continue; f[2]++; char c=g[i][j]; q.push({i,j}); int x,y; while(!q.empty()) { x=q.front().first;y=q.front().second; q.pop(); if(vis[x][y])continue; vis[x][y]=1; if(g[x+1][y]==c)q.push({x+1,y}); if(g[x-1][y]==c)q.push({x-1,y}); if(g[x][y+1]==c)q.push({x,y+1}); if(g[x][y-1]==c)q.push({x,y-1}); } } } for(int i=0;i<5;i++) { cout<<f[i]<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...