poj 1334 Two Mountaineers

poj 1334 Two Mountaineers,第1张

poj 1334 Two Mountaineers
# include <cstdio>using namespace std;# define min(a,b) ((a)<(b)?(a):(b))# define max(a,b) ((a)>(b)?(a):(b))int p[1001][2],n,p1,p2,ans,last;int main(){    int test;    scanf("%d",&test);    while(test--)    {        scanf("%d",&n);        for(int i=0;i<n;i++)          scanf("%d %d",&p[i][0],&p[i][1]);        p1=0,p2=n-1,ans=0;        last=p[0][1];        while(p2>p1)        {if(p[p2-1][1]>p[p2][1]&&p[p1+1][1]>p[p1][1]){     ans+=2*(min(p[p2-1][1],p[p1+1][1])-last);     last=min(p[p2-1][1],p[p1+1][1]);     if(p[p2-1][1]==last) p2--;     if(p[p1+1][1]==last) p1++;}else if(p[p2-1][1]<p[p2][1]&&p[p1+1][1]>p[p1][1]){   ans+=2*(last-max(p[p2-1][1],p[p1][1]));   last=max(p[p2-1][1],p[p1][1]);   if(last==p[p2-1][1]) p2--;   else p1--;}else if(p[p2-1][1]>p[p2][1]&&p[p1+1][1]<p[p1][1]){ ans+=2*(last-max(p[p2][1],p[p1+1][1])); last=max(p[p2][1],p[p1+1][1]); if(last==p[p1+1][1]) p1++; else p2++;}else{   ans+=2*(min(p[p1][1],p[p2][1])-last);   last=min(p[p1][1],p[p2][1]);   if(last==p[p1][1]) p1--;   else p2++;}        }        printf("%dn",ans*2);    }    return 0;}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4907928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存