啊?
by OPEC @ 2024-04-25 20:23:30
@[chenxiqing](/user/1114484) 十年OI一场空,不开long long见祖宗
by define_sb_114514 @ 2024-04-25 20:35:58
@[chenxiqing](/user/1114484) 你最后一组测试点错了,本来输出
```
-1
2
```
的,结果你的输出是
```
-1
6
```
by define_sb_114514 @ 2024-04-25 20:40:08
hack数据:
输入:
```
4 6
1000000000 1000000000 1000000000 1000000000
1000000000 1 4
1000000000 1 4
1000000000 1 4
1000000000 1 4
1000000000 1 4
1000000000 1 4
```
输出:
```
-1
2
```
by define_sb_114514 @ 2024-04-25 20:41:16
@[chenxiqing](/user/1114484) 帮你改了一下,AC了~~不要脸的求互关~~
```
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long r[2000005],d[2000005],s[2000005],t[2000005],cf[2000005];
bool judge(int x){
memset(cf,0,sizeof(cf));
long long sum=0;
for(int i=1;i<=x;i++){
cf[s[i]]+=d[i];
cf[t[i]+1]-=d[i];
}
for(int i=1;i<=n;i++){
sum+=cf[i];
if(sum>r[i])
return false;
}
return true;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&r[i]);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&d[i],&s[i],&t[i]);
if(judge(m)==true){cout<<'0';return 0;}
long long l=1,r=m,mid;
while(l<r){
mid=(l+r)/2;
if(judge(mid)==true) l=mid+1;
else r=mid;
}
cout<<"-1\n"<<l;
}
```
by define_sb_114514 @ 2024-04-25 21:04:34
十年OI一场空,不开long long见祖宗
by CKRITO @ 2024-04-28 23:23:25
@[chenxiqing](/user/1114484)
不开long long见祖宗
by 1004779564bzbjj @ 2024-05-12 10:34:11