Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- #define NMAX 2000
- #define MMAX 20000
- using namespace std;
- ifstream fin ("tunel.in");
- ofstream fout ("tunel.out");
- int cautbin (int v[], int k, int y){
- int st = 1;
- int dr = k;
- int ans = MMAX;
- while (st <= dr){
- int mid = (st + dr) / 2;
- if (v[mid] <= y)
- {
- st = mid + 1;
- }
- else {
- ans = v[mid];
- dr = mid - 1;
- }
- }
- return ans;
- }
- int mat[NMAX][MMAX];
- int v[NMAX];
- int main(){
- int n, m, cer, k, x;
- fin >> cer;
- fin >> n >> m >> x;
- for (int i = 1; i <= n - 1; i++){
- fin >> k;
- v[i] = k;
- for (int j = 1; j <= k; j++)
- fin >> mat[i][j];
- }
- if (cer == 1){
- int linc ,colc, t;
- int jos, sus;
- linc = x;
- colc = 0;
- while (colc < m){
- if (linc < n)
- jos = cautbin(mat[linc], v[linc], colc);
- else
- jos = MMAX;
- if (linc > 1)
- sus = cautbin(mat[linc - 1], v[linc - 1], colc);
- else
- sus = MMAX;
- if(jos == MMAX && sus == MMAX)
- break;
- if (jos < sus)
- linc ++;
- else
- linc --;
- colc = min (jos, sus);
- }
- fout << linc;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement