Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Task : Robot
- Author : Phumipat C. [MAGCARI]
- Language : C++
- */
- #include<bits/stdc++.h>
- using namespace std;
- struct A{
- int i,j,w;
- };
- queue<A > que;
- int dir[2][4] = {{1,-1,0,0},{0,0,1,-1}};
- char a[2010][2010];
- int mark[2010][2010];
- int main(){
- int n,m,all = 0;
- scanf("%d %d",&n,&m);
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- scanf(" %c",&a[i][j]);
- if(a[i][j] == 'X')
- que.push({i,j,0}),mark[i][j] = 1;
- else if(a[i][j] == 'A')
- all++;
- }
- }
- int ans = 0,cnt = 0;
- while(!que.empty()){
- A now = que.front();
- que.pop();
- if(a[now.i][now.j] == 'A'){
- a[now.i][now.j] = 'E';
- ans+=now.w*2;
- cnt++;
- }
- if(cnt == all) break;
- for(int k=0;k<4;k++){
- int ni = now.i + dir[0][k];
- int nj = now.j + dir[1][k];
- if(ni < 1 || nj < 1 || ni > n || nj > m) continue;
- if(mark[ni][nj] || a[ni][nj] == 'W') continue;
- mark[ni][nj] = 1;
- que.push({ni,nj,now.w+1});
- }
- }
- printf("%d %d\n",cnt,ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment