Submission #377064

# Submission time Handle Problem Language Result Execution time Memory
377064 2021-03-12T22:46:26 Z iliccmarko medians (balkan11_medians) C++14
100 / 100
42 ms 3688 KB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
#define INF 1000000000
#define LINF 1000000000000000LL
#define pb push_back
#define all(x) x.begin(), x.end()
#define len(s) (int)s.size()
#define test_case { int t; cin>>t; while(t--)solve(); }
#define input(n, v) {for(int i = 0;i<n;i++) cin>>v[i];}
#define output(n, v) {for(int i = 0;i<n;i++) cout<<v[i]<<" "; cout<<endl;}
#define single_case solve();
#define line cout<<"------------"<<endl;
#define ios { ios_base::sync_with_stdio(false); cin.tie(NULL); }
const int N = 2e5 + 50;
vector<int> a;
int b[N];
int n;
int c[N];
int l, r;

int main()
{
    ios
    cin>>n;
    for(int i = 1;i<=n;i++) cin>>b[i];
    a.pb(b[1]);
    c[b[1]]++;
    int l = 1;
    int r = 2*n-1;
    for(int i = 2;i<=n;i++)
    {
        while(c[l])l++;
        while(c[r])r--;
        if(b[i]==b[i-1])
        {
            a.pb(l);
            c[l]++;
            a.pb(r);
            c[r]++;
        }
        else
        {
            if(c[b[i]])
            {
                if(b[i]>b[i-1])
                {
                    a.pb(r);
                    c[r]++;
                    r--;
                    while(c[r])r--;
                    a.pb(r);
                    c[r]++;
                    r--;
                }
                else
                {
                    a.pb(l);
                    c[l]++;
                    l++;
                    while(c[l])l++;
                    a.pb(l);
                    c[l]++;
                    l++;
                }
            }
            else
            {
                a.pb(b[i]);
                c[b[i]]++;
                if(b[i]>b[i-1])
                {
                    while(c[r])r--;
                    a.pb(r);
                    c[r]++;
                }
                else
                {
                    while(c[l])l++;
                    a.pb(l);
                    l++;
                }
            }
        }
    }

    for(int x : a) cout<<x<<" ";



    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 0 ms 364 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 0 ms 364 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 1 ms 364 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 2 ms 492 KB Output is correct
3 Correct 4 ms 620 KB Output is correct
4 Correct 5 ms 1004 KB Output is correct
5 Correct 13 ms 1520 KB Output is correct
6 Correct 20 ms 2540 KB Output is correct
7 Correct 42 ms 3688 KB Output is correct