79分:
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
int n,m,s,max1=0,q;
struct lk {
int a,b;
} a[210000];
bool cmp(lk a,lk b) {
if(a.a!=b.a) {
return a.a>b.a;
}
return a.b>b.b;
}
signed main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i].a>>a[i].b;
max1=max(max1,a[i].a);
}
for(int i=1; i<=n; i++) {
if(a[i].a==max1) {
q++;
}
}
if(q==1) {
s++;//如果攻击有且只有一个最大值,那么s++
}
sort(a+1,a+n+1,cmp);
max1=a[1].b;
for(int i=1; i<=n; i++) {
if(a[i].b>max1) {
s++;//如果还有比当前最大值还大的s++
max1=a[i].b;
}
}
cout<<s;
return 0;
}
100分:
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
int n,m,s,max1=0,q;
struct lk {
int a,b;
} a[210000];
bool cmp(lk a,lk b) {
if(a.a!=b.a) {
return a.a>b.a;
}
return a.b>b.b;
}
signed main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i].a>>a[i].b;
max1=max(max1,a[i].a);
}
sort(a+1,a+n+1,cmp);
max1=0;
for(int i=1; i<=n; i++) {
if(a[i].b>max1) {
s++;
max1=a[i].b;
}
}
cout<<s;
return 0;
}
为什么,谁能给我举个反例或解释一下