题解:P13510 [KOI 2025 #1] 远方的卡片
一道水题
首先,读入n和a[i]
cin >> n;
for(int i = 1;i <= 2*n;i++){
cin >> a[i];
}
接着,从数字1到n开始枚举,定义l为第一个数字 k ,r为第二个数字k,在从1到2*n中,找到l,r。挑选l和r中间的数字的数量(r-l-1),maxn统计最大值,最后输出便可以了
for(int i = 1;i <= n;i++){
bool f = 0;
int l = 0,r = 0;
for(int j = 1;j <= 2*n;j++){
if(a[j] == i && f == 0){
l = j;
f = 1;
}else if(a[j] == i && f){
r = j;
break;
}
}
maxn = max(maxn,r-l-1);
}
code
#include<bits/stdc++.h>
using namespace std;
int n,maxn = -1;
int a[4004];
int main(){
cin >> n;
for(int i = 1;i <= 2*n;i++){
cin >> a[i];
}
for(int i = 1;i <= n;i++){
bool f = 0;
int l = 0,r = 0;
for(int j = 1;j <= 2*n;j++){
if(a[j] == i && f == 0){
l = j;
f = 1;
}else if(a[j] == i && f){
r = j;
break;
}
}
maxn = max(maxn,r-l-1);
}
cout << maxn;
return 0;
}