社区讨论

pts 95求助 WA#8

P1083[NOIP 2012 提高组] 借教室参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjuausd
此快照首次捕获于
2025/11/04 08:37
4 个月前
此快照最后确认于
2025/11/04 08:37
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+2;
int n,m,r1[MAXN];
long long f[MAXN];
int a[MAXN][3]; 
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&r1[i]);
	for(int i=1;i<=m;i++) scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
	int l=1,r=m+1;
	while(l<r){
		int mid=(l+r)/2;
		for(int i=1;i<=mid;i++){
			f[a[i][1]]+=a[i][0];
			f[a[i][2]+1]-=a[i][0];
		}
		bool flag=false;
		for(int i=1;i<=n;i++){
			f[i]=f[i-1]+f[i];
			if(f[i]>r1[i]){
				flag=true;
				break;
			}
		}
		if(flag) r=mid;
		else l=mid+1;
		memset(f,0,sizeof(f));
	}
	if(r!=n+1){
		printf("-1\n");
		printf("%d",r);
	}else printf("0");
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...