1217 借教室 2012年NOIP全国联赛提高组[迷之不能自拔]

来源:互联网 发布:怎么联系网络推手 编辑:程序博客网 时间:2024/04/30 00:05
#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<cstdio> using namespace std;const int MN=1000006; long long  a[MN],num[MN],x[MN],y[MN],sum,ans,s[MN],n,m;long long gt(){    char c=getchar();    long long x=0,f=1;    while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}    while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}    return x*f;}bool ck(int k){    memset(num,0,sizeof(num));    for(int i=1;i<=k;i++){        num[x[i]]+=s[i];        num[y[i]+1]-=s[i];//+1    }    sum=0;    for(int i=1;i<=n;i++){        sum+=num[i];//cout<<233<<endl;        if(sum>a[i])return 0;    }    return 1;} int main(){    cin>>n>>m;    for(int i=1;i<=n;i++)    {        a[i]=gt();    }    for(int i=1;i<=m;i++){        s[i]=gt();x[i]=gt();y[i]=gt();    }    int l=1,r=m,mid;    //for(int i=1;i<=m;i++){    //  cout<<i<<' '<<ck(i)<<endl;    //}    while(l<=r){        mid=(l+r)>>1;                //cout<<l<<' '<<r<<' '<<mid<<' '<<ans<<endl;                //cout<<"ck mid"<<' '<<mid<<' '<<ck(mid)<<endl;        if(ck(mid)){            l=mid+1;            //cout<<233<<ans<<endl;        }        else{            ans=mid;            r=mid-1;            //cout<<2333<<' '<<ans<<endl;        }        //cout<<l<<' '<<r<<' '<<mid<<' '<<ans<<endl;    }    if(!ans)cout<<0;    else cout<<-1<<endl<<ans;    return 0;}
0 0
原创粉丝点击