作者:xq的acm之路
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2034
题目大意:环形跑道上的加油站有n个,第i个加油站加油pi单位,开到下个加油站需要qi单位,求一个起点使得从该点出发可以走完全程。
思路:扫描就行,改细节改了半天,,,,
代码如下:
#include <iostream>
using namespace std;
int a[200002],b[200002];
int main()
{
int t,p=0;
cin>>t;
while(t--)
{
p++;
int n;
cin>>n;
for(int i=0; i<n; i++)
cin>>a[i];
for(int i=0; i<n; i++)
cin>>b[i];
for(int i=n; i<2*n; i++)
a[i]=a[i-n];
for(int i=n; i<2*n; i++)
b[i]=b[i-n];
int l,r,ans=-1;
for(l=0;l<n;l=r)
{
int sum=0,num=0;r=l;
while(ans==-1&&(num+=(a[r]-b[r++]))>=0)
if(++sum==n)ans=l;
if(ans!=-1)break;
}
if(ans==-1)
cout<<"Case "<<p<<": Not possible"<<endl;
else
cout<<"Case "<<p<<": Possible from station "<<ans+1<<endl;
}
return 0;
}