Submission #1156490

#TimeUsernameProblemLanguageResultExecution timeMemory
1156490dostsStone Arranging 2 (JOI23_ho_t1)C++20
100 / 100
121 ms25548 KiB
//Siga Siga?! YES!
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
using namespace std;
#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define sp << " " <<    
#define all(cont) cont.begin(),cont.end()
#define vi vector<int>

const int inf = 1e18,N = 3e3+1,MOD =  998244353;


void solve() {  
    int n;
    cin >> n;
    vi a(n+1);
    for (int i=1;i<=n;i++) cin >> a[i];
    unordered_map<int,vector<int>> mp;
    stack<int> pq;
    for (int i=1;i<=n;i++) {
        while (!pq.empty() && !mp[a[i]].empty() && pq.top() > mp[a[i]].back()) {
            mp[a[pq.top()]].pop_back();
            pq.pop();
        }
        mp[a[i]].push_back(i);
        pq.push(i);
    }
    vi ans(n+1,0);
    for (auto&[x,y] : mp) {
        if (y.empty()) continue;
        for (int j = y[0];j<=y.back();j++) {
            ans[j] = x;
        }
    }
    for (int i=1;i<=n;i++) cout << ans[i] << '\n';
}


int32_t main() { 
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    #ifdef Dodi 
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
    #endif
    int t = 1;
    //cin >> t;
    while (t --> 0) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...