#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5;
struct node
{
int v,w;
}stn[maxn+10];
struct nodeb
{
int lt,rt;
}qj[maxn+10];
int i,lt,m,md,n,rt;
long long f[maxn+10],g[maxn+10],s;
long long chk(int x)
{
int i;
long long sumn=0;
for(i=1;i<=n;++i)
{
f[i]=f[i-1]+(stn[i].w>=x);
g[i]=g[i-1]+(stn[i].w>=x)*stn[i].v;
}
for(i=1;i<=m;++i)
sumn+=(f[qj[i].rt]-f[qj[i].lt-1])*(g[qj[i].rt]-g[qj[i].lt-1]);
return sumn;
}
int main()
{
scanf("%d%d%lld",&n,&m,&s);
for(i=1;i<=n;++i)
scanf("%d%d",&stn[i].w,&stn[i].v);
for(i=1;i<=m;++i)
scanf("%d%d",&qj[i].lt,&qj[i].rt);
while(lt<=rt)
{
md=lt+rt>>1;
if(chk(md)<s)
rt=md-1;
else lt=md+1;
}
printf("%lld",min(abs(chk(lt)-s),abs(chk(lt-1)-s)));
return 0;
}
悬赏关注