Submission #1180254

#TimeUsernameProblemLanguageResultExecution timeMemory
1180254bbartekStone Arranging 2 (JOI23_ho_t1)C++20
100 / 100
217 ms15768 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
#define st first
#define nd second
#define pb push_back

const int maxn = 2e5+7;

int liczby[maxn];
map<int,int> ostatni;
int wynik[maxn];

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin>>n;

    int a;
    for(int i=1;i<=n;i++){
        cin>>a;
        liczby[i] = a;
    }

    stack<pair<pair<int,int>,int>> przedzialy;

    for(int i=1;i<=n;i++){
        if(ostatni[liczby[i]] == 0){
            ostatni[liczby[i]] = i;
            przedzialy.push({{i,i},liczby[i]});
        }
        else{
            while(przedzialy.top().st.st > ostatni[liczby[i]]){
                ostatni[przedzialy.top().nd] = 0;
                przedzialy.pop();
            }
            przedzialy.pop();
            przedzialy.push({{ostatni[liczby[i]],i},liczby[i]});
        }
    }

    while(przedzialy.size() != 0){
        auto x = przedzialy.top();
        przedzialy.pop();
        for(int i=x.st.st;i<=x.st.nd;i++){
            wynik[i] = x.nd;
        }
    }

    for(int i=1;i<=n;i++){
        cout<<wynik[i]<<"\n";
    }

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