#include<iostream>#include<algorithm>usingnamespace std;struct stu {int y;int r;int c;}s[100010];boolcmp(stu a, stu b){return a.y < b.y;}int maxn =-1;int maxc =-1;intmain(){int m;
cin >> m;for(int i =0; i < m; i++){
cin >> s[i].y >> s[i].r;}sort(s, s + m, cmp);int cita =0,num,r_yu;for(int i =0; i < m; i++){
cita = s[i].y;
num =0;for(int j =0; j < m; j++){if(s[j].y >= cita){
r_yu =1;}else
r_yu =0;if(r_yu == s[j].r)
num++;}if(num >= maxn){
maxn = num;
maxc = cita;}}
cout << maxc << endl;return0;}
#include<iostream>#include<algorithm>usingnamespace std;constint maxn =1e5+10;struct node {int x, y;}s[maxn];boolcmp(node a, node b){return a.x < b.x;}struct node1 {int x, y, a, b, sum;}s1[maxn];boolcmp1(node1 a, node1 b){if(a.sum != b.sum){return a.sum < b.sum;}return a.x < b.x;}intmain(){
ios::sync_with_stdio(false);int m;
cin >> m;for(int i =1; i <= m; i++){
cin >> s[i].x >> s[i].y;}sort(s +1, s +1+ m, cmp);int k =1;
s1[k].x = s[k].x;if(s[k].y ==1)
s1[k].b++;else
s1[k].a++;for(int i =2; i <= m; i++){if(s[i].x == s1[k].x){if(s[i].y ==1)
s1[k].b++;else
s1[k].a++;}else{
k++;
s1[k].x = s[i].x;if(s[i].y ==1)
s1[k].b++;else
s1[k].a++;}}int sum =0;for(int i =1; i <= k; i++){
sum += s1[i].a;
s1[i].a = sum;}
sum =0;for(int i = k; i >=1; i--){
sum += s1[i].b;
s1[i].b = sum;}
s1[0].a =0;for(int i =1; i <= m; i++){
s1[i].sum = s1[i -1].a + s1[i].b;}sort(s1 +1, s1 +1+ k, cmp1);
cout << s1[k].x << endl;return0;}
另一个100分代码
#include<iostream>#include<algorithm>usingnamespace std;constint N =100010;int yy1[N], yy0[N];int idx0=1, idx1=1;intmain(){
ios::sync_with_stdio(0);
cin.tie(0);int m;
cin >> m;for(int i =1; i <= m; i++){int y, r;
cin >> y >> r;if(r){
yy1[idx1++]= y;}else{
yy0[idx0++]= y;}}//idx0 idx1分别表示两个数组存储的元素个数
idx0--, idx1--;sort(yy0 +1, yy0 +1+ idx0);sort(yy1 +1, yy1 +1+ idx1);int res =0, t =1;//最大预测值和对应的最大thetafor(int i =1; i <= idx1; i++){int s = idx1 - i +1;//在yy1数组中可以成功预测的值int tmp = yy1[i];//暂取一个作为theta//从yy0数组中找小于theta的第一个元素的位置int pos =lower_bound(yy0 +1, yy0 +1+ idx0, tmp)- yy0;if(pos>0) s += pos;//yy0数组的预测结果if(s == res){
t =max(t, i);continue;}if(s > res){
res = s;
t = i;//获取到最大预测的theta的下标}}bool flag =true;//表示最大theta在yy1数组中for(int i =1; i <= idx0; i++){int s = i -1;//在yy0数组中可以成功预测的值int tmp = yy0[i];//theta//从yy1数组中找到大于等于theta的第一个元素int pos =lower_bound(yy1 +1, yy1 +1+ idx1, tmp)- yy1;if(pos <= idx1) s +=(idx1 - pos +1);if(s == res){
t =max(t, i);
flag =false;continue;}if(s > res){
flag =false;
res = s;
t = i;}}if(flag) cout << yy1[t];else cout << yy0[t];return0;}
题目自己写的70分代码#include <iostream>#include <algorithm>using namespace std;struct stu { int y; int r; int c;}s[100010];bool cmp(stu a, stu b) { return a.y < b.y;}int maxn = -1;int maxc = -1;int main() { int m; cin >> m