Submission #857336

#TimeUsernameProblemLanguageResultExecution timeMemory
857336MarceantasyStone Arranging 2 (JOI23_ho_t1)C++17
35 / 100
66 ms12912 KiB
#include <bits/stdc++.h> 
using namespace std; 
 
#define ll long long 
#define ar array
#define rep(i, n) for(int i = 0; i<(int)n; ++i)
 
const int mxN = 2e5+5, MOD = 998244353; 

map<int, vector<int>> mp;

void solve(){
    int n;
    cin >> n;
    vector<int> ans(n);
    multiset<int> vals;
    for(int i = 0; i<n; ++i){
        int x;
        cin >> x; 
        vals.insert(i);
        if(mp.count(x) && mp[x].size() >= 1){
            int idx = i-1;
            while(idx > mp[x].back()){
                mp[ans[idx]].pop_back();
                vals.erase(vals.find(idx));
                idx--;
            }
        }
        mp[x].push_back(i);
        ans[i] = x;
    }
    vector<int> f;
    for(int val : vals)f.push_back(val);
    for(int i = 1; i<f.size(); ++i){
        int idx = f[i-1];
        if(ans[idx] == ans[f[i]]){
            while(idx < f[i]){
                ans[idx++] = ans[f[i]];
            }
        }
    }
    rep(i, n){
        cout << ans[i] << "\n";
    }
}
 

int main(){ 
#ifdef _DEBUG
//	freopen("input.txt", "r", stdin);
//	freopen("output.txt", "w", stdout);
#endif
    std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0);
 
    solve();
}

Compilation message (stderr)

Main.cpp: In function 'void solve()':
Main.cpp:34:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     for(int i = 1; i<f.size(); ++i){
      |                    ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...