제출 #913954

#제출 시각아이디문제언어결과실행 시간메모리
913954mychecksedadStone Arranging 2 (JOI23_ho_t1)C++17
100 / 100
388 ms33412 KiB
/* Author : Mychecksdead  */
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
const int N = 1e6+100, M = 1e5+10, K = 52, MX = 30;

int n, a[N], ans[N];
void solve(){
  cin >> n;
  for(int i = 1; i <= n; ++i) cin >> a[i];

  vector<pair<int, int>> q;
  map<int, vector<int>> last;

  for(int i = 1; i <= n; ++i){
    if(q.empty()){
      q.pb({a[i], 1});
      last[a[i]].pb(i);
    }else{
      if(last[a[i]].empty()){
        q.pb({a[i], 1});
        last[a[i]].pb(i);
      }else{
        int x = last[a[i]].back(), s = 0;
        if(x == i - 1){
          q.back().second++;
          last[a[i]].back() = i;
          continue;
        }
        for(int cur = i - 1; ;){
          cur -= q.back().second;
          s += q.back().second;
          last[q.back().first].pop_back();
          q.pop_back(); 
          if(cur == x){
            auto v = q.back();
            q.pop_back();
            last[a[i]].pop_back();
            last[a[i]].pb(i);
            q.pb({v.first, v.second + s + 1});
            break;
          }
        }
      }
    }
    // for(auto p: q) cout << p.first << ' ' << p.second << '\n';
    // cout << endl;
  }
  int x = 1;
  for(auto p: q){
    while(p.second--){
      ans[x] = p.first;
      ++x;
    }
    // cout << p.first << ' ' << p.second << '\n';
  }

  for(int i = 1; i <= n; ++i) cout << ans[i] << '\n';
}



int main(){
  cin.tie(0); ios::sync_with_stdio(0);
  int tt = 1, aa;
  // freopen("in.txt", "r", stdin);
  // freopen("out.txt", "w", stdout);
  while(tt--){
    solve();
    // en;
    en;
  }
  cerr<<"time taken : "<<(float)clock()/CLOCKS_PER_SEC<<" seconds\n";
  return 0;
} 

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:70:15: warning: unused variable 'aa' [-Wunused-variable]
   70 |   int tt = 1, aa;
      |               ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...