Submission #1315568

#TimeUsernameProblemLanguageResultExecution timeMemory
1315568tarner_exemedians (balkan11_medians)C++17
100 / 100
34 ms5376 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define elif else if
#define sc second
#define ft first

const int sizen = 2e6+11;
const int oo = 1e16+11;


int T[sizen];
int A[sizen];
int visited[sizen];

int N;
int t = 1;


void solve()
{
    cin >> N;
    for(int i = 1 ;i <= N ; i++)
    {
        cin >> T[i];
    }
    for(int i = 1 ; i < N*2 ; i ++)
    {
        visited[i] = 0;
    }
    int sm = 1;
    int bg = (2*N)-1;
    
    A[1] = T[1];
    visited[T[1]] = 1;
    
    for(int i = 2 ; i <= N ; i++)
    {
        if(T[i] == T[i-1])
        {
            while(visited[bg] != 0)
            {
                bg--;
            }
            while(visited[sm] != 0)
            {
                sm++;
            }
            A[(i-1)*2] = sm;
            A[i*2 - 1] = bg;

            visited[bg] = 1;
            visited[sm] = 1;
        }
        elif(T[i] < T[i-1])
        {
            if(visited[T[i]] == 0)
            {

                A[i*2 - 1] = T[i];
                visited[T[i]]=1;

                while(visited[sm] != 0)
                {
                    sm ++;
                }

                A[(i-1)*2] = sm;
                visited[sm] = 1;
            }
            elif(1)
            {
                while(visited[sm] != 0)
                {
                    sm ++;
                }

                A[(i-1)*2] = sm;
                visited[sm] = 1;

                while(visited[sm] != 0)
                {
                    sm ++;
                }

                A[(i-1)*2+1] = sm;
                visited[sm] = 1;
            }
        }
        elif(1)
        {
            if(visited[T[i]] == 0)
            {
                A[i*2 - 1] = T[i];
                visited[T[i]] = 1;
                
                while(visited[bg] != 0)
                {
                    bg -- ;
                }
                
                A[(i-1)*2] = bg;
                
                visited[bg] = 1;
                visited[T[i]] = 1;
            }
            elif(1)
            {
                while(visited[bg] != 0)
                {
                    bg -- ;
                }
                
                A[(i-1)*2] = bg;
                visited[bg] = 1;
                
                while(visited[bg] != 0)
                {
                    bg -- ;
                }
                A[(i-1)*2+1] = bg;
                visited[bg] = 1;
            }
        }
    }

    for(int i = 1; i  < N*2 ; i++)
    {
        cout << A[i] << " ";
    }
    cout << "\n";
}

signed main()
{
    while(t--)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...