100分求助!!!

P1083 [NOIP2012 提高组] 借教室

啊?
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


|