从第一次开始计算, 如果到第i个过不去, 那么i以前的都不可能成立。
#include <iostream>
#include <cstdio>
#define MAXN 100001
using namespace std;
int main() {
int T, Case = 0;
int p[MAXN], q[MAXN];
cin >> T;
while(T--) {
int i, j, cnt = 0;
int N;
cin >> N;
for(i = 0; i < N; i++)
cin >> p[i];
for(i = 0; i < N; i++)
cin >> q[i];
for(i = 0; p[i] < q[i]; ++i) ;
for(; i < N; i++) {
int las = 0;
j = i; cnt = 0;
while(cnt < N) {
las = las + p[j % N] - q[j % N];
if(las < 0) break;
j++; cnt++;
}
if(cnt == N|| j % N < i) break;
i = j % N;
}
cout << "Case " << ++Case << ": ";
if(cnt == N) cout << "Possible from station " << i + 1 << endl;
else cout << "Not possible\n";
}
return 0;
}