Advertisement
ec1117

Untitled

Mar 20th, 2022
1,183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3.  
  4. #define pi pair<int,int>
  5. #define f first
  6. #define s second
  7. #define pb push_back
  8. #define FOR(i,a,b) for(int i=a;i<b;i++)
  9. #define For(i,a) FOR(i,0,a)
  10.  
  11. vector<string> grid;
  12. map<pair<pi,pi>,int> done;
  13.  
  14. int n,m;
  15. int dx[]={0,1,0,-1};
  16. int dy[]={1,0,-1,0};
  17.  
  18. bool leg(int x, int y){
  19.     return x>=0 && y>=0 && x<n && y<m && grid[x][y]=='C';
  20. }
  21.  
  22. int main(){
  23.     cin>>n>>m;
  24.     For(i,n){
  25.         string S;cin>>S;
  26.         grid.pb(S);
  27.     }
  28.  
  29.     int cnt=0;
  30.     For(i,n)For(j,m)if(grid[i][j]=='G'){
  31.         For(k1,4){
  32.             int k2=(k1+2)%4;
  33.             pi p1={i+dx[k1],j+dy[k1]};
  34.             pi p2={i+dx[k2],j+dy[k2]};
  35.             if(leg(p1.f,p1.s) && leg(p2.f,p2.s)){
  36.                 if(!done[{p1,p2}]){
  37.                     cnt++;
  38.                     done[{p1,p2}]=1;
  39.                     done[{p2,p1}]=1;
  40.                     goto done;
  41.                 }
  42.             }
  43.         }
  44.         For(k1,4)For(k2,4)if(k1!=k2){
  45.             pi p1={i+dx[k1],j+dy[k1]};
  46.             pi p2={i+dx[k2],j+dy[k2]};
  47.             if(leg(p1.f,p1.s) && leg(p2.f,p2.s)){
  48.                 if(!done[{p1,p2}]){
  49.                     cnt++;
  50.                     done[{p1,p2}]=1;
  51.                     done[{p2,p1}]=1;
  52.                     goto done;
  53.                 }
  54.             }
  55.         }
  56.         done:;
  57.     }
  58.     cout<<cnt<<endl;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement