Submission #739048

#TimeUsernameProblemLanguageResultExecution timeMemory
739048ToxtaqStone Arranging 2 (JOI23_ho_t1)C++17
60 / 100
104 ms4336 KiB
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    vector<int>v(n);
    if(n <= 2000){
        for(int i = 0;i < n;++i){
            cin >> v[i];
            int pos = -1;
            for(int j = i - 1;j >= 0;--j){
                if(v[i] == v[j]){
                    pos = j;
                    break;
                }
            }
            if(pos == -1)continue;
            for(int j = pos;j < i;++j){
                v[j] = v[i];
            }
        }
        for(int i : v)cout << i << '\n';
        return 0;
    }
    stack<int>ones, twos;
    for(int i = 0;i < n;++i){
        cin >> v[i];
        if(v[i] == 1){
            while(twos.size() && ones.size() && twos.top() > ones.top()){
                v[twos.top()] = 1;
                twos.pop();
            }
            ones.push(i);
        }
        else{
            while(ones.size() && twos.size() && ones.top() > twos.top()){
                v[ones.top()] = 2;
                ones.pop();
            }
            twos.push(i);
        }
    }
    for(int i : v)cout << i << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...