50pts求助(非暴力)
  • 板块P9815 wbyblD
  • 楼主xiaozhangma
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/11/3 10:51
  • 上次更新2023/11/3 15:17:56
查看原帖
50pts求助(非暴力)
47911
xiaozhangma楼主2023/11/3 10:51

思路:如果前面累计的b小于a那就会回到0,否则一直向右推到n+1 代码:

#include<bits/stdc++.h>
#define LL long long
#define F(x,s,t) for(int x=s;x<=t;x++)
using namespace std;
int read(){
	int x=0,f=1;
	char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
const int N = 1e5 + 10;
int a[N], b[N];
int main(){
 	int T = read();
 	while(T -- ){
 		int n = read();
 		int cnt = 0;
 		F(i, 1, n){
 			a[i] = read(), b[i] = read();
 			cnt += a[i], cnt -= b[i - 1];
 			if(cnt > 0){
 				puts("0");
 				break;
			}
		}
		if(cnt <= 0)printf("%d\n", n + 1);
	}
	return 0;
}
2023/11/3 10:51
加载中...