a53

Palat

a53
Oct 14th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cassert>
  4. using namespace std;
  5.  
  6. ifstream fin("palat.in");
  7. ofstream fout("palat.out");
  8.  
  9. int n , m;
  10. int a[1001][1001];
  11. short x[1000001], y[1000001];
  12. char P[1001][1001];
  13.  
  14. const int dx[]={0 , 0 , 1 , -1}, dy[]={1 , -1 , 0 , 0};
  15.  
  16. int main(){
  17. fin >> n >> m;
  18. for(int i = 1 ; i <= n ; i ++)
  19. for(int j = 1 ; j <= m ; j ++)
  20. {
  21. fin >> P[i][j];
  22. if(P[i][j] == 'I')
  23. x[1] = i, y[1] = j , cerr << i << " " << j;
  24. }
  25.  
  26. fin.close();
  27.  
  28. int st , dr;
  29. st = dr = 1;
  30. a[x[1]][y[1]] = 1;
  31. while(st <= dr)
  32. {
  33. int i = x[st], j = y[st];
  34. for(int k = 0 ; k < 4 ; k ++)
  35. {
  36. int ii = i + dx[k], jj = j + dy[k];
  37. if( ii > 0 && ii <= n && jj > 0 && jj <= m && P[ii][jj] !='Z' && a[ii][jj] == 0)
  38. {
  39. a[ii][jj] = a[i][j] + 1;
  40. dr ++;
  41. x[dr] = ii, y[dr] = jj;
  42. }
  43. }
  44. st ++;
  45. }
  46. /*
  47. for(int i = 1 ; i <= n ; i ++)
  48. {
  49. for(int j = 1 ; j <= m ; j ++)
  50. cerr << a[i][j] << " ";
  51. cerr << endl;
  52. }
  53. */
  54. int Min = 1000000000 , imin ,jmin;
  55. for(int i = 1 ; i <= n ; i ++)
  56. for(int j = 1 ; j <= m ; j ++)
  57. if( P[i][j] == 'F' && a[i][j] <= Min && a[i][j] > 0)
  58. Min = a[i][j] , imin = i , jmin = j;
  59. fout << imin << " " << jmin;
  60. fout.close();
  61. return 0;
  62. }
Add Comment
Please, Sign In to add comment