1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; long long n,m,k,w,mid; long long d[1000005],s[1000005],j[1000005],r[1000005]; long long cf[1000005],rr[1000005]; bool bz; bool check(long long a) { /*cout<<"---"<<endl; cout<<a<<endl;*/ memset(cf,0,sizeof(cf)); for(int i=1;i<=a;++i) { cf[s[i]]+=d[i]; cf[j[i]+1]-=d[i]; } /*for(int i=1;i<=n;++i) { cout<<cf[i]<<" "; } cout<<endl;*/ for(int i=1;i<=n;++i) { rr[i]=rr[i-1]+cf[i]; //cout<<rr[i]<<" "; if(rr[i]>r[i]) return 0; } return 1; } int main(){ cin>>n>>m; for(int i=1;i<=n;++i) { scanf("%lld",&r[i]); } for(int i=1;i<=m;++i) { scanf("%lld %lld %lld",&d[i],&s[i],&j[i]); if(s[i]>j[i]) swap(s[i],j[i]); } k=0;w=n+1; while(k+1<w) { mid=(k+w)/2; if (check(mid)) k=mid; else w=mid; /*cout<<k<<" "<<w<<endl; cout<<"---"<<endl;*/ } if(w==n+1) cout<<0; else cout<<-1<<endl<<w; return 0; }
- 1
信息
- ID
- 2621
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者