Submission #163072

#TimeUsernameProblemLanguageResultExecution timeMemory
163072Nashikmedians (balkan11_medians)C++14
100 / 100
158 ms12204 KiB
#include <iostream>
#include <set>
using namespace std;
set<int> se;
int a[200005];
int b[100005];
int main()
{
    int n,cnt=1;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>b[i];
    }
    for(int i=1;i<=2*n-1;i++){
        se.insert(i);
    }
    a[1]=b[1];
    se.erase(a[1]);
    set<int>::iterator it;
    for(int i=2;i<=n;i++){
        if(b[i]==b[i-1]){
            ///trebuie bagate doua elemente, unu mai mare ca b[i],unu mai mic ca b[i]
            ///le bagam pe cel mai mare si cel mai mic element nefolosit
            //cout<<"intra in prima cu "<<i<<"\n";
            it=se.begin();
            a[++cnt]=*it;
            se.erase(it);
            it=se.end();
            it--;
            a[++cnt]=*it;
            se.erase(it);
        }
        else
        if(b[i]>b[i-1]){
            if(se.count(b[i])==0){
                it=se.end();
                it--;
                a[++cnt]=*it;
                se.erase(it);
                it=se.end();
                it--;
                a[++cnt]=*it;
                se.erase(it);
                ///exista deja mijlocul
            }
            else{
                se.erase(b[i]);
                a[++cnt]=b[i];
                it=se.end();
                it--;
                a[++cnt]=*it;
                se.erase(it);
            }
        }
        else{
            if(se.count(b[i])==0){
                it=se.begin();
                a[++cnt]=*it;
                se.erase(it);
                it=se.begin();
                a[++cnt]=*it;
                se.erase(it);
            }
            else{
                se.erase(b[i]);
                a[++cnt]=b[i];
                it=se.begin();
                a[++cnt]=*it;
                se.erase(it);
            }
        }
    }
    for(int i=1;i<=2*n-1;i++)
        cout<<a[i]<<" ";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...