Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4.  
  5. int main(){
  6.     ll n,m,i,j,com;
  7.     while(cin>>n>>m>>com){
  8.         if(n+m+com==0) break;
  9.         char mat[n][m];
  10.         int vis[n][m];
  11.         for(i=0;i<n;i++){
  12.             for(j=0;j<m;j++){
  13.                 scanf(" %c",&mat[i][j]);
  14.                 vis[i][j]=0;
  15.             }
  16.         }
  17.         com--;
  18.         ll pas=0;
  19.         pair <int,int> pos;
  20.         pos.first=0;
  21.         pos.second=com;
  22.         ll ans,loop,tam_loop;
  23.         while(true){
  24.             pas++;
  25.             //cout<<pos.first<<" "<<pos.second<<endl;
  26.             if(mat[pos.first][pos.second]=='N'){
  27.                 pos.first--;    
  28.             }else if(mat[pos.first][pos.second]=='S'){
  29.                 pos.first++;
  30.             }else if(mat[pos.first][pos.second]=='E'){
  31.                 pos.second++;
  32.             }else if(mat[pos.first][pos.second]=='W'){
  33.                 pos.second--;
  34.             }
  35.             if(pos.first<0 || pos.first==n || pos.second<0 || pos.second == m){
  36.                 ans=1;
  37.                 break;
  38.             }else if(vis[pos.first][pos.second]>0){
  39.                 //cout<<vis[pos.first][pos.second]<<endl;
  40.                 ans=0;
  41.                 loop = vis[pos.first][pos.second];
  42.                 tam_loop = pas-loop;
  43.                 break;
  44.             }else{
  45.                 vis[pos.first][pos.second]=pas;
  46.             }
  47.         }
  48.         if(ans){
  49.             cout<<pas<<" step(s) to exit"<<endl;
  50.         }else{
  51.             cout<<loop<<" step(s) before a loop of "<<tam_loop<<" step(s)"<<endl;
  52.         }
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement