題目大意:給定
肯定最大配最小,排序模擬就行了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 100100
using namespace std;
int n,ans;
pair<int,int> dq[M];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d%d",&dq[i].second,&dq[i].first);
sort(dq+1,dq+n+1);
int l=1,r=n;
while(l<r)
{
ans=max(ans,dq[l].first+dq[r].first);
int temp=min(dq[l].second,dq[r].second);
dq[l].second-=temp;
if(!dq[l].second)
++l;
dq[r].second-=temp;
if(!dq[r].second)
--r;
}
if(l==r)
ans=max(ans,dq[l].first+dq[r].first);
cout<<ans<<endl;
return 0;
}