Advertisement
Mihai_Preda

Untitled

Mar 22nd, 2021
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. #define NMAX 2000
  4. #define MMAX 20000
  5. using namespace std;
  6. ifstream fin ("tunel.in");
  7. ofstream fout ("tunel.out");
  8.  
  9.  
  10. int cautbin (int v[], int k, int y){
  11.   int st = 1;
  12.   int dr = k;
  13.   int ans = MMAX;
  14.   while (st <= dr){
  15.     int mid = (st + dr) / 2;
  16.  
  17.     if (v[mid] <= y)
  18.     {
  19.       st = mid + 1;
  20.     }
  21.     else {
  22.       ans = v[mid];
  23.       dr = mid - 1;
  24.     }
  25.   }
  26.   return ans;
  27. }
  28.  
  29. int mat[NMAX][MMAX];
  30. int v[NMAX];
  31. int main(){
  32.   int n, m, cer, k, x;
  33.   fin >> cer;
  34.   fin >> n >> m >> x;
  35.   for (int i = 1; i <= n - 1; i++){
  36.     fin >> k;
  37.     v[i] = k;
  38.     for (int j = 1; j <= k; j++)
  39.       fin >> mat[i][j];
  40.   }
  41.   if (cer == 1){
  42.     int linc ,colc, t;
  43.     int jos, sus;
  44.  
  45.     linc = x;
  46.     colc = 0;
  47.     while (colc < m){
  48.       if (linc < n)
  49.        jos = cautbin(mat[linc], v[linc], colc);
  50.       else
  51.         jos = MMAX;
  52.       if (linc > 1)
  53.         sus = cautbin(mat[linc - 1], v[linc - 1], colc);
  54.       else
  55.         sus = MMAX;
  56.       if(jos == MMAX && sus == MMAX)
  57.         break;
  58.       if (jos < sus)
  59.         linc ++;
  60.       else
  61.         linc --;
  62.       colc = min (jos, sus);
  63.     }
  64.     fout << linc;
  65.   }
  66.   return 0;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement