Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<algorithm>
- using namespace std;
- long long tmp,a[101][101],n;
- bool loang(long long mmin,long long mmax)
- {
- long long check[101][101] = {0};
- long long tkx[4] = {-1,0,1,0};
- long long tky[4] = {0,1,0,-1};
- long long qx[101], qy[101];
- long long u,v,u1,v1;
- if (a[1][1]< mmin || a[1][1] > mmax)
- {
- return false;
- }
- qx[1] = 1;
- qy[1] = 1;
- long long first = 1;
- long long last = 1;
- check[1][1] = 1;
- while(first <= last)
- {
- u = qx[first];
- v = qy[first];
- first++;
- for(long long t = 0; t < 4; t++)
- {
- u1 = u + tkx[t];
- v1 = v + tky[t];
- if (u1>=1 && u1 <=n && v1>=1 && v1<=n && check[u1][v1]==0 && a[u1][v1]<=mmax&&a[u1][v1]>=mmin)
- {
- last++;
- qx[last] = u1;
- qy[last] = v1;
- check[u1][v1] = 1;
- }
- }
- }
- if(check[n][n] == 1) return true;
- return false;
- }
- int main()
- {
- long long i,j;
- cin >> n;
- for(i = 1; i <= n; i++)
- {
- for(j = 1; j <= n; j++)
- {
- cin >> a[i][j];
- }
- }
- long long l=1,h=110,ans,m;
- while (l<=h)
- {
- m =(l+h)/2;
- bool ok= false;
- for(long long mmin = 0; mmin <= 110; mmin++)
- {
- if(loang(mmin,mmin+m) == true)
- {
- ok= true;
- break;
- }
- }
- if(ok==true)
- {
- h = m - 1;
- ans = m;
- }
- else
- {
- l = m + 1;
- }
- }
- cout << ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement