Submission #1312975

#TimeUsernameProblemLanguageResultExecution timeMemory
1312975zbyszkomedians (balkan11_medians)C++20
100 / 100
143 ms20864 KiB
#include <bits/stdc++.h>
using namespace std;

using ull = unsigned long long;
using ll = long long;
using pii = pair<ull,ull>;
#define x first
#define y second

set<int> us;

void zm(int& a,int& b){
    while(us.find(a)!=us.end()) a++;
    while(us.find(b)!=us.end()) b--;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n;cin >> n;
    vector<int> med(n);
    for(int& i:med){
        cin >> i;
        us.insert(i);
    }
    set<int> usv;
    int l=1,r=2*n-1;
    zm(l,r);
    cout << med[0] << " ";
    usv.insert(med[0]);
    for(int i=1;i<n;i++){
        //cout << i << ": " << l << " " << r << endl;
        if(usv.find(med[i])!=usv.end()){
            if(med[i]==med[i-1]){
                cout << l << " " << r << " ";
                us.insert(l);
                us.insert(r);
                usv.insert(l);
                usv.insert(r);
                zm(l,r);
            }
            else if(med[i]>med[i-1]){
                cout << r << " ";
                us.insert(r);
                usv.insert(r);
                zm(l,r);
                cout << r << " ";
                us.insert(r);
                usv.insert(r);
                zm(l,r);
            }
            else{
                cout << l << " ";
                us.insert(l);
                usv.insert(l);
                zm(l,r);
                cout << l << " ";
                us.insert(l);
                usv.insert(l);
                zm(l,r);
            }
        }
        else if(med[i]>med[i-1]){
            cout << med[i] << " " << r << " ";
            us.insert(r);
            usv.insert(r);
            usv.insert(med[i]);
            zm(l,r);
        }
        else{
            cout << med[i] << " " << l << " ";
            us.insert(l);
            usv.insert(l);
            usv.insert(med[i]);
            zm(l,r);
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...