Submission #1145567

#TimeUsernameProblemLanguageResultExecution timeMemory
1145567slayermedians (balkan11_medians)C++20
100 / 100
33 ms2864 KiB
#include<bits/stdc++.h>
using namespace std;

const int N = 1e5;
bool vis[2 * N];

int mx, mn;

void updateMin() {
    
    while ( vis[mn]) mn ++;
    
    return ;
    
}

void updateMax() {
    
    while ( vis[mx]) mx --;
    
    return ;
}

int main() {
    
    int n;
    cin >> n;
    
    vector<int> a(n);
    for ( int i = 0; i < n; i ++)
        cin >> a[i];
        
    vector<int> b(n * 2 - 1);
    
    b[0] = a[0];
    vis[a[0]] = 1;
    
    mn = 1;
    mx = n * 2 - 1;
    
    for ( int i = 1; i < n; i ++) {
        
        if ( a[i] == a[i - 1]) {
            
            updateMin();
            b[i * 2 - 1] = mn;
            vis[mn] = 1;
            
            updateMax();
            b[i * 2] = mx;
            vis[mx] = 1;
        }
        else if ( a[i] > a[i - 1]) {
            
            if ( vis[a[i]]) {
                
                updateMax();
                b[i * 2 - 1] = mx;
                vis[mx] = 1;
                
                updateMax();
                b[i * 2] = mx;
                vis[mx] = 1;
                
            }
            else {
                
                b[i * 2 - 1] = a[i];
                vis[a[i]] = 1;
                
                updateMax();
                b[i * 2] = mx;
                vis[mx] = 1;
            }
        }
        else {
            
            if ( vis[a[i]]) {
                
                updateMin();
                b[i * 2 - 1] = mn;
                vis[mn] = 1;
                
                updateMin();
                b[i * 2] = mn;
                vis[mn] = 1;
                
            }
            else {
                
                b[i * 2 - 1] = a[i];
                vis[a[i]] = 1;
                
                updateMin();
                b[i * 2] = mn;
                vis[mn] = 1;
            }
        }
    }
    
    for ( int i = 0; i < 2 * n - 1; i ++)
        cout << b[i] << " ";
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...