4726: 【GESP2512五级】数字移动
内存限制:512 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述

样例输入 复制
6
1 2 1 3 2 3
样例输出 复制
2
提示
#include <iostream>
using namespace std;
const int N = 100010;
int a[N];
int b[N];
int pos;
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
}
int left = 1, right = 1e6, ans = 1e6;
while(left <= right){
int mid = (left + right) / 2;
bool possible = true;
pos = 0;
for(int i = 0; i < n; i++){
if(a[i]>mid){
b[pos++]=a[i];
}
}
for(int i = 0; i < pos; i += 2){
if(b[i]!=b[i+1]){
possible = false;
break;
}
}
if(possible){
ans = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
cout << ans << endl;
return 0;
}