求助!!!HELP

P1314 [NOIP2011 提高组] 聪明的质监员

求败 @ 2017-10-01 09:35:15

_蒟蒻程序有什么问题吗?WA了七个点_

#include<cstdio>
#include<cstring> 
#include<iostream>
using namespace std;
long long n,m,k,s,S,W=0,ans=0x7fffffff,mid,y,l,r,
    w[1000100],v[1000100],a[200200][2],g[200200],t[200200];
void in(){
    scanf("%lld%lld%lld",&n,&m,&S);
    for(int i=1;i<=n;i++){
        scanf("%lld%lld",&w[i],&v[i]);
        W=max(W,w[i]);
    }    
    for(int i=1;i<=m;i++)
        scanf("%lld%lld",&a[i][0],&a[i][1]);
    return;
}
int main(){
    in();
    l=0,r=W+1;
    while(l<=r){
        mid=(l+r)/2;
        s=0;
        for(int i=1;i<=n;i++){
            if(w[i]>=mid)g[i]=g[i-1]+v[i],t[i]=t[i-1]+1;
            else g[i]=g[i-1],t[i]=t[i-1];
        }
        for(int i=1;i<=m;i++)
            s+=(g[a[i][1]]-g[a[i][0]-1])*(t[a[i][1]]-t[a[i][0]-1]);
        k=max(S-s,s-S);
        ans=min(ans,k);
        if(s-S==0){
            cout<<'0';
            return 0;
        }
        else if(s>S)l=mid+1;
        else r=mid-1;
    }
    cout<<ans;
    return 0;
}

|