思路:前缀和
#include<bits/stdc++.h>
using namespace std;
const int MAXSIZE = 1e5+10;
struct node {
int y;
int result;
}a[MAXSIZE];
bool compare(node xx,node yy) {
return xx.y<yy.y;
}
int sum[MAXSIZE];//前缀和
int main() {
int m;
scanf("%d",&m);
for(int i=0;i<m;i++) {
scanf("%d%d",&a[i].y,&a[i].result);
}
sort(a,a+m,compare);
sum[0]=a[0].result;
for(int i=1;i<m;i++) {
sum[i]=sum[i-1]+a[i].result;
}
int cunt=sum[m-1];//记录预测准确的个数
int pivot=a[0].y;//最佳阈值
int ycunt=0;
for(int i=1;i<m;i++) {
if(a[i].y==a[i-1].y) ycunt++;
else ycunt=0;
if(cunt<=i-ycunt-sum[i-1-ycunt]+sum[i]-sum[i-ycunt-1]+sum[m-1]-sum[i-1])
{
pivot = a[i].y;
cunt=i-ycunt-sum[i-1-ycunt]+sum[i]-sum[i-ycunt-1]+sum[m-1]-sum[i-1];
}
//printf("%d %d %d\n",a[i].y,a[i].result,i-sum[i-1]+sum[m-1]-sum[i-1]);
}
printf("%d\n",pivot);
return 0;
}