Submission #1316210

#TimeUsernameProblemLanguageResultExecution timeMemory
1316210michud07medians (balkan11_medians)C++20
100 / 100
15 ms2912 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;

const int N = 1e5 + 5;
int medians[N];
int tab[2 * N];
bool used[2 * N];

int getNext(int x, int del){
    while(used[x]){
        x += del;
    }
    return x;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n, l, r;
    cin >> n;
    l = 1;
    r = 2 * n - 1;
    for(int i = 1 ; i <= n ; i++){
        cin >> medians[i];
    }
    tab[1] = medians[1];
    used[medians[1]] = 1;
    for(int i = 2 ; i <= n ; i++){
        l = getNext(l, 1);
        r = getNext(r, -1);
        if(medians[i] == medians[i - 1]){
            tab[2 * i - 2] = l;
            tab[2 * i - 1] = r;
            used[l] = 1;
            used[r] = 1;
        }else if(medians[i - 1] < medians[i]){
            if(!used[medians[i]]){
                tab[2 * i - 2] = medians[i];
                used[medians[i]] = 1;
            }else{
                tab[2 * i - 2] = r;
                used[r] = 1;
                r = getNext(r, -1);
            }
            tab[2 * i - 1] = r;
            used[r] = 1;
        }else{
            if(!used[medians[i]]){
                tab[2 * i - 2] = medians[i];
                used[medians[i]] = 1;
            }else{
                tab[2 * i - 2] = l;
                used[l] = 1;
                l = getNext(l, 1);
            }
            tab[2 * i - 1] = l;
            used[l] = 1;
        }
    }
    for(int i = 1 ; i < 2 * n ; i++){
        cout << tab[i] << " ";
    }
    cout << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...