_Lemon_ @ 2017-10-01 18:08:09
#include<bits/stdc++.h>
using namespace std;
int w[200005],v[200005],n,m,nnd[200005][3];
long long s,all[200005],num[200005],k,ans=300000000000;
int check(int mid)
{
memset(all,0,sizeof(all));
memset(num,0,sizeof(num));
k=0;
for(int i=1;i<=n;i++)
if(w[i]>=mid) { all[i]=all[i-1]+v[i]; num[i]=num[i-1]+1;}
else { all[i]=all[i-1]; num[i]=num[i-1];}
for(int i=1;i<=m;i++)
{
int tot=all[nnd[i][2]]-all[nnd[i][1]-1];
int sum=num[nnd[i][2]]-num[nnd[i][1]-1];
k+=tot*sum;
}
ans=min(ans,abs(k-s));
if(k>s) return 1;
else if(k<s) return 0;
else if(k==s) return 2;
}
int main()
{
// cout<<ans<<endl;
int i,j,r=0,l=300000000000;
cin>>n>>m>>s;
for(i=1;i<=n;i++)
{
scanf("%d%d",&w[i],&v[i]);
if(w[i]>r) r=w[i];
if(w[i]<l) l=w[i];
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&nnd[i][1],&nnd[i][2]);
if(nnd[i][1]>nnd[i][2]) swap(nnd[i][1],nnd[i][2]);
}
while(l<r)
{
int mid=(l+r)/2;
int w=check(mid);
if(w==1) l=mid+1;
else if(w==0) r=mid;
else {
cout<<0;
return 0;
}
}
cout<<ans;
return 0;
}