请问为什么第一个79分而第二个AC了
查看原帖
请问为什么第一个79分而第二个AC了
938796
kinghku_dzk楼主2024/7/13 20:23

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;
}

为什么,谁能给我举个反例或解释一下

2024/7/13 20:23
加载中...