1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <bits/stdc++.h> using namespace std; #define sf(n) scanf("%d",&n) #define pf(n) printf("%d",n) #define fi(i,s,t) for(int i=s;i<t;i++) const int INF=0x3f3f3f3f; const int MAX=100; int getMax(int a[][MAX],int n,int m,int &_max){ int index=-1; fi(i,0,n) if(a[i][m] > _max){ _max=a[i][m]; index=i; } return index; } int bs(int a[][MAX],int rows,int l,int r){ int _max = -INF,m=(l+r)/2; int max_index=getMax(a,rows,m,_max); if(m==0 || m == r) return _max; if(a[max_index][m-1] > _max) return bs(a,rows,l,m-1); return bs(a,rows,m+1,r); } int main(){ freopen("in","r",stdin); int n,m,a[MAX][MAX]; sf(n);sf(m); fi(i,0,n) fi(j,0,m) sf(a[i][j]); pf(bs(a,n,0,m-1)); return 0; }
|