| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1315546 | tarner_exe | 중앙값 배열 (balkan11_medians) | C++17 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define elif else if
#define ft first
#define sc second
#define pb push_back
#define pII pair<int,int>
const int sizen = 2e6+11;
const int oo = 1e16+11;
int T[sizen];
int A[sizen];
int zajete[sizen];
int t = 1;
int N;
void solve()
{
cin >> N;
int najstarszy = (2*N)-1;
int najmlodszy = 1;
for (int i = 1 ; i <= N ;i ++)
{
cin >> T[i];
}
for (int i = 1; i < 2*N ; i++)
{
zajete[i] = 0;
}
A[1] = T[1];
zajete[T[1]]=1;
for (int i = 2; i <= N ; i++)
{
if(T[i] == T[i-1])
{
while(zajete[najmlodszy] == 1)
{
najmlodszy++;
}
while(zajete[najstarszy] == 1)
{
najstarszy--;
}
A[(i-1)*2] = najmlodszy;
A[(i*2)-1] = najstarszy;
zajete[najmlodszy] = 1;
zajete[najstarszy] = 1;
}
elif(T[i] > T[i-1])
{
while(zajete[najstarszy] == 1)
{
najstarszy--;
}
A[(i-1)*2] = T[i];
A[(i*2)-1] = najstarszy;
zajete[T[i]]=1;
zajete[najstarszy]=1;
}
elif(T[i] < T[i-1])
{
while(zajete[najmlodszy] == 1)
{
najmlodszy++;
}
A[(i-1)*2] = T[i];
A[(i*2)-1]= najmlodszy;
zajete[najmlodszy] = 1;
zajete[T[i]] =1;
}
elif(1)
{
cout << T[najstarszy-oo];
}
}
//cout << N << "\n";
for (int i = 1 ; i < 2*N ; i++)
{
cout << A[i] << " ";
if(A[i] =< 0 || A[i] >= 2*N)
{
cout << T[i-oo];
}
}
cout << "\n";
}
signed main()
{
//cin >> t;
while(t--)
{
solve();
}
}
