Advertisement
Emiliatan

e095

Mar 5th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. /* e095             */
  2. /* AC (0.4s, 9.9MB) */
  3. #include <cstdio>
  4. #include <cmath>
  5. #include <algorithm>
  6. #define in(i, j) (i>=0&&i<n&&j>=0&&j<m)
  7.  
  8. using namespace std;
  9.  
  10. int n, m, t, taget, point1, point2, point3;
  11. bool isFind;
  12. int arr[1600][1600];
  13.  
  14. void solve()
  15. {
  16.     int li, lj, ri, rj;
  17.  
  18.     for(int i = 0; i < n; i++)
  19.         for(int j = 0; j < m; j++)
  20.             scanf("%d", &arr[i][j]);
  21.     scanf("%d", &t);
  22.     while(t-- && scanf("%d", &taget))
  23.     {
  24.         li = n - 1, lj = 0;
  25.         ri = 0, rj = m - 1;
  26.         isFind = false;
  27.         while(li >= ri)
  28.         {
  29.             while(rj > 0 && arr[ri][rj] > taget) rj--;
  30.             while(lj < m && arr[li][lj] < taget) lj++;
  31.             if(arr[li][lj] == taget)
  32.             {
  33.                 printf("yes [%d, %d]\n", li + 1, lj + 1);
  34.                 isFind = true;
  35.                 break;
  36.             }
  37.             if(arr[ri][rj] == taget)
  38.             {
  39.                 printf("yes [%d, %d]\n", ri + 1, rj + 1);
  40.                 isFind = true;
  41.                 break;
  42.             }
  43.             li--, ri++;
  44.         }
  45.         if(!isFind) printf("no\n");
  46.     }
  47. }
  48.  
  49. int main()
  50. {
  51.     scanf("%d %d",&n,&m);
  52.     solve();
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement