30分求diao
查看原帖
30分求diao
1046511
__ok__楼主2023/8/10 10:04

代码求diao 30分(已O2,8WA,6TLE)

#include <bits/stdc++.h>
using namespace std;
long long n,m,s,w[200001],v[200001],a[200001],b[200001],y[200001],ans;
long long check(long long x)
{
    long long sum=0;
    memset(y,0,sizeof(y));
    for(long long i=1;i<=n;i++)
    {
        long long cnt=0,tot=0;
        for(long long j=a[i];j<=b[i];j++)
            if(w[j]>=x)
                cnt++,tot+=v[j];
        y[i]=cnt*tot;
        sum+=y[i];
    }
    return sum;
}
int main()
{
    cin>>n>>m>>s;
    for(long long i=1;i<=n;i++)
        cin>>w[i]>>v[i];
    for(long long i=1;i<=m;i++)
        cin>>a[i]>>b[i];
    long long l=0,r=s;
    while(l<=r)
    {
        long long mid=(l+r)/2;
        ans=check(mid);
        if(ans>s)
            l=mid+1;
        else
            r=mid-1;
    }
    cout<<abs(s-ans);
    return 0;
}
2023/8/10 10:04
加载中...