fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int tab[1001][1001],sp[1001][1001],n;
  4.  
  5. int odp(int w){
  6. for(int i=1;i<=n;i++){
  7. for(int j=1;j<=n;j++){
  8. if(tab[j][i]>=w) sp[j][i]=1;
  9. else sp[j][i]=-1;
  10. sp[j][i]+=max(sp[j-1][i],sp[j][i-1]);
  11. }
  12. }
  13. return sp[n][n];
  14. }
  15.  
  16.  
  17. int main(){
  18. ios_base::sync_with_stdio(0);
  19. cin.tie(0);
  20. cin>>n;
  21. for(int i=0;i<=n;i++){
  22. for(int j=0;j<=n;j++){
  23. if(i==0||j==0) sp[j][i]=-1000000001;
  24. else cin>>tab[j][i];
  25. }
  26. }
  27. sp[0][1]=0;
  28. int p=-1,k=1e9+1,sr;
  29. while(k-p>1){
  30. sr=(p+k)/2;
  31. if(odp(sr)>=0) p=sr;
  32. else k=sr;
  33. }
  34. cout<<p;
  35. }
Success #stdin #stdout 0.01s 5612KB
stdin
3
5 1 10
7 6 4
1 2 5
stdout
5