Submission #1255369

#TimeUsernameProblemLanguageResultExecution timeMemory
1255369Matjazmedians (balkan11_medians)C++20
5 / 100
29 ms2884 KiB
#include<iostream>
#include <vector>

using namespace std;





int main(){
	int N;
	cin >> N;

	vector<int> B(N);

	vector<bool> available(2*N -1, true);

	int first = 0;
	int last = 2 * N - 2;

	for (int i=0;i<N;i++) cin >> B[i];

	vector<int> A(2*N - 1);
    A[0] = B[0];
    available[B[0] - 1] = false;

    for (int i=1;i<N;i++){

    	if (B[i] == B[i -1]){
    		while (!available[first]) first++;
    		while (!available[last]) last--;
    		A[2 * i - 1] = first + 1;
    		A[2 * i] = last + 1;
    		available[last] = false;
    		available[first] = false;
    	}

    	if (B[i] > B[i-1]){
    		A[2 * i - 1] = B[i];
    		available[B[i] - 1] = false;
    		while (!available[last]) last--;
    		A[2 * i] = last + 1;
    		available[last] = false;
    	}

    	if (B[i] < B[i-1]){
    		A[2 * i - 1] = B[i];
    		available[B[i] - 1] = false;
    		while (!available[first]) first++;
    		A[2 * i] = first + 1;
    		available[first] = false;
    	}
    }

    for (int i=0;i<A.size();i++) cout << A[i] << " ";
    	cout << endl;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...