封印一击
——————————————————————————————————————————————
考试状态不好,一时间没想到这么贪
本题贪心很好证,用图像就可以证明最优情况只能是两端点,这里不证明了
——————————————————————————————————————————————
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100010;
ll ans=0,thsum=0;
int summ=0,n,a[N],b[N],ansn;
struct mes{
int c,id;
}q[N*2];
bool cmp(mes x,mes y){
return x.c<y.c;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i],&b[i]);
thsum+=1ll*a[i];
q[i].c=a[i];q[i].id=1;q[i+n].c=b[i];q[i+n].id=-1;
}
sort(q+1,q+2*n+1,cmp);
for(int i=1;i<=2*n;i++){
if(q[i].id==1){summ++;thsum-=q[i].c;}
if(ans<1ll*(1ll*thsum+1ll*summ*q[i].c)){
ans=1ll*(1ll*thsum+1ll*summ*q[i].c);
ansn=q[i].c;
}
if(q[i].id==-1){summ--;}
}
printf("%d %lld",ansn,ans);
}