记录编号 | 461890 | 评测结果 | AAAAAAAAAAAAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2012]借教室 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 1.693 s | ||
提交时间 | 2017-10-20 21:11:04 | 内存使用 | 19.39 MiB | ||
#include<bits/stdc++.h> using namespace std; int n,m,r[1000006],d[1000006],s[1000006],t[1000006],f[1000006]; bool check(int x){ memset(f,0,sizeof(f)); for(int i=1;i<=x;i++){ f[s[i]-1]-=d[i]; f[t[i]]+=d[i]; }int now=0; for(int i=0;i<=n;i++){ if(now+r[i]<0)return 0; now+=f[i]; }return 1; } int main() { freopen("classrooms.in","r",stdin); freopen("classrooms.out","w",stdout); 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]); int l=1,r=m; while(l!=r){ int mid=(l+r)>>1; if(check(mid))l=mid+1; else r=mid; } if(check(l))cout<<0; else cout<<-1<<endl<<l; return 0; }