题目地址:http://acm.timus.ru/problem.aspx?space=1&num=2069
思路:对于起点要么横着走,要么竖着走,则共有四种方式,直接竖横、横竖、先横后竖再横、现竖后横再竖,对于中间路径取最大值即可。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn=1e5+50; int row[maxn],col[maxn]; int main() { int n,m,maxr=0,maxc=0; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { scanf("%d",&row[i]); maxr=max(maxr,row[i]); } for(int i=0;i<m;i++) { scanf("%d",&col[i]); maxc=max(maxc,col[i]); } int ans; ans=min(row[0],col[m-1]); ans=max(ans,min(row[n-1],col[0])); ans=max(ans,min(row[0],min(maxc,row[n-1]))); ans=max(ans,min(col[0],min(maxr,col[m-1]))); printf("%d\n",ans); return 0; }
时间: 2024-11-14 13:17:29