rt,改动前:
#include<iostream>
#include<algorithm>
using namespace std;
long long b[100005],e[100005],a[100005],n,t,ans;
bool cmp(int x,int y){
return x>y;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>e[i];
a[e[i]]=1;
}
for(int i=1;i<=100000;i++){
if(!a[i]) b[++t]=i;
}
sort(a+1,a+n/2+1,cmp);
sort(a+n/2+1,a+n+1);
sort(b+1,b+n+1,cmp);
for(int i=1,j=1,k=1;i<=n/2;i++){
if(e[j]>b[k]){
j++;
}else{
ans++;
j++;
k++;
}
}
for(int i=n/2+1,j=i,k=n;i<=n;i++){
if(e[j]<b[k]){
j++;
}else{
ans++;
j++;
k--;
}
}
cout<<ans;
return 0;
}
//1380 474
WA 18pts
https://www.luogu.com.cn/record/71691833
改动后:
#include<iostream>
#include<algorithm>
using namespace std;
long long a[100005],b[100005],e[100005],n,t,ans;
bool cmp(int x,int y){
return x>y;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
e[a[i]]=1;
}
for(int i=1;i<=100000;i++){
if(!e[i]){
b[++t]=i;
}
}
sort(a+1,a+n/2+1,cmp);
sort(a+n/2+1,a+1+n);
sort(b+1,b+1+n,cmp);
for(int i=1,j=1,k=1;i<=n/2;i++){
if(a[j]>b[k]){
j++;
}else{
ans++;
j++;
k++;
}
}
for(int i=n/2+1,j=i,k=n;i<=n;i++){
if(a[j]<b[k]){
j++;
}else{
ans++;
j++;
k--;
}
}
cout<<ans;
return 0;
}
//1380 474
https://www.luogu.com.cn/record/71697023
AC 100pts
这是为什么