优化(Just Finish it up,uva 11093)

来源:互联网 发布:淘宝链接二维码 编辑:程序博客网 时间:2024/06/01 09:41
#include<bits/stdc++.h>#define maxn 100010using namespace std;typedef long long ll;ll jia[maxn];ll jian[maxn];ll N;inline ll next(ll now){    if(now==N) return 1;    else return now+1;}inline ll run(ll s){    ll sum=0;    sum=sum+jia[s]-jian[s];    if(sum<0) return s;    ll now=next(s);    while(1)    {        if(now==s) return -1;        sum=sum+jia[now]-jian[now];        if(sum<0) return now;        now=next(now);    }}int main(){    ll T;    scanf("%lld",&T);    for(ll t=1;t<=T;t++)    {        scanf("%lld",&N);        for(ll i=1;i<=N;i++)            scanf("%lld",&jia[i]);        for(ll i=1;i<=N;i++)            scanf("%lld",&jian[i]);        bool ok=false;        for(ll i=1;i<=N;)        {            ll ans=run(i);            if(ans==-1)            {                printf("Case %lld: Possible from station %lld\n",t,i);                ok=true;                break;            }            else            {                if(ans<i) break;                else i=ans+1;            }        }        if(!ok) printf("Case %lld: Not possible\n",t);    }    return 0;}

0 0