P1083 [NOIP2012 提高组] 借教室
#include <bits/stdc++.h>
using namespace std;
struct xun{
int c,start,end;
}b[1000];
int cf[1000],a[1000];
int main(){
int n, m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i].c>>b[i].start>>b[i].end;
cf[b[i].start]+=b[i].c;
cf[b[i].end+1]-=b[i].c;
}
int sum=0,ans=-1,f=0;
for(int i=1;i<=n;i++){
sum+=cf[i];
if(sum>a[i]){
for(int p;sum>a[i];m--){
cf[b[m].start]-=b[m].c;
cf[b[m].end+1]+=b[m].c;
if(b[m].start<=i&&i<=b[m].end);
}
if(f==1){
ans=m;
f=0;
}
else{
ans=min(ans,m);
}
}
}
if(ans==-1){
cout<<"0";
}
else{
printf("-1 \n %d",ans);
}
return 0;
}