#include<iostream> #include<algorithm> #include<cmath> using namespace std; const long N=210000; long w[N],v[N],L[N],R[N],n,m,wmax(0); long long s,ans,sum[N],sv[N]; long long f(long W) { sum[0]=0;sv[0]=0; for(long i=1;i<=n;i++) w[i]>=W?(sum[i]=sum[i-1]+1,sv[i]=sv[i-1]+v[i]):(sum[i]=sum[i-1],sv[i]=sv[i-1]); long long t=0; for(long i=1;i<=m;i++) t+=(sum[R[i]]-sum[L[i]-1])*(sv[R[i]]-sv[L[i]-1]); return t; } void solve() { long low,high,mid; long long now; ans=0x7fffffffffffffffll; for(low=0,high=wmax;low<=high;) { mid=(low+high)/2; now=f(mid); if (abs(now-s)<ans) ans=abs(now-s); if(now==s) return; if (now<s) high=mid-1; else low=mid+1; } } void input() { cin>>n>>m>>s; for(long i=1;i<=n;i++) { cin>>w[i]>>v[i]; if (w[i]>wmax) wmax=w[i]; } for(long i=1;i<=m;i++) cin>>L[i]>>R[i]; } int main() { input(); solve(); cout<<ans<<endl; return 0; } /************************************************************** Problem: 2308 User: admin Language: C++ Result: Accepted Time:876 ms Memory:11916 kb ****************************************************************/