P4982
#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <string.h>
#include <string>
#include <algorithm>
#include <iomanip>
#include <queue>
using namespace std;
struct Node{
long long csat;
long long a;
bool operator < (const Node b) const{
return a<b.a;
}
}cow[200007];
bool cmp(Node a,Node b){
return a.csat>b.csat;
}
priority_queue<Node> q;
long long i,n,c,f,L[200007],R[200007],sum;
void Clear(){
while(!q.empty()) q.pop();
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>c>>f;
for(i=1; i<=c; i++) cin>>cow[i].csat>>cow[i].a;
sort(cow+1,cow+1+c,cmp);
for(i=1; i<=n/2; i++){
sum+=cow[i].a;
q.push(cow[i]);
}
L[i]=sum;
for(i=n/2+1; i<=c-n/2; i++){
if(q.top().a>cow[i].a){
sum-=q.top().a;
sum+=cow[i].a;
q.pop();
q.push(cow[i]);
}
L[i]=sum;
}
Clear();
sum=0;
for(i=c; i>=c-n/2+1; i--){
sum+=cow[i].a;
q.push(cow[i]);
}
R[i]=sum;
for(i=c-n/2; i>=n/2+1; i--){
if(q.top().a>cow[i].a){
sum-=q.top().a;
sum+=cow[i].a;
q.pop();
q.push(cow[i]);
}
R[i]=sum;
}
for(i=c-n/2; i>=n/2+1; i--){
if(L[i]+R[i]+cow[i].a<=f){
cout<<cow[i].csat;
return 0;
}
}
cout<<"-1";
}
求条