1 条题解
-
0117爱好者 (mengqingyu) LV 10 @ 2024-7-26 10:11:06
#include <iostream> #include <cmath> #include <cstring> using namespace std; long long w[1000010],v[1000010],n,m,S,res,s1[1000010],s2[1000010],l[1000010],r[1000010]; long long calc(int x) { cerr<<x<<endl; memset(s1,0,sizeof(s1)),memset(s2,0,sizeof(s2)); for(int i=1;i<=n;i++) { s1[i]=s1[i-1],s2[i]=s2[i-1]; if(w[i]>=x)s1[i]++,s2[i]+=v[i]; } for(int i=1;i<=m;i++) { res+=(s1[r[i]]-s1[l[i]-1])*(s2[r[i]]-s2[l[i]-1]); } return res; } int main() { ios::sync_with_stdio(false); cin>>n>>m>>S; for(int i=1;i<=n;i++) { cin>>w[i]>>v[i]; } for(int i=1;i<=m;i++) { cin>>l[i]>>r[i]; } long long l=0,r=1e6,ans=0x3f3f3f3f3f3f3f3f; while(l<=r) { long long mid=(l+r)/2; if(abs(calc(mid)-S)<ans)ans=abs(res-S); if(res<S)r=mid-1; else l=mid+1; res=0; } cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 1670
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 25
- 已通过
- 4
- 上传者