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