답안 #713757

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
713757 2023-03-23T02:28:51 Z LittleOrange 자동 인형 (IOI18_doll) C++17
6 / 100
104 ms 11324 KB
#include "doll.h"
#include<bits/stdc++.h>
using namespace std;
using ll = int;
 
void create_circuit(int M, std::vector<int> A) {
  int N = A.size();
  std::vector<int> C(M + 1,0);
  C[0] = A[0];
  if (N == 1){
    for (int i = 1; i <= M; ++i) C[i] = 0;
    vector<int> X,Y; 
    answer(C, X, Y);
    return;
  }
  A.push_back(0);
  vector<vector<ll>> nxt(M);
  for(ll i = 0;i<N;i++){
    nxt[A[i]-1].push_back(A[i+1]);
  }
  for(auto &o : nxt){
    if (o.size()>2) {
        ll old = o.size();
        o.resize(1<<(__lg(old-1)+1),-1);
        swap(o[old-1],o.back());
    }
  }
  vector<int> X,Y;
  ll it = 0;
  vector<ll> CUR;
  ll root;
  function<ll(ll,ll,ll)> dfs;
  dfs = [&](ll cnt, ll st, ll lv){
    //cerr << "dfs " << cnt << " " << st << " " << lv << "\n";
    if (cnt==1){
        return CUR[st]==-1?root:CUR[st];
    }
    ll i = it++;
    X.push_back(dfs(cnt-cnt/2,st,lv+1));
    Y.push_back(dfs(cnt/2,st+(1<<lv),lv+1));
    return -1-i;
  };
  for(ll i = 0;i<M;i++){
    CUR = nxt[i];
    if (CUR.size()>1){
        C[i+1] = root = -1-it;
        dfs(CUR.size(),0,0);
    }else if(CUR.size()==1){
        C[i+1] = CUR[0];
    }
  }
  for(ll i = 0;i<N;i++) {
    //cerr << "nxt " << i << ":";
    //for(ll j : nxt[i]) cerr << " " << j;
    //cerr << "\n";
  }
  answer(C, X, Y);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 36 ms 6352 KB Output is correct
3 Correct 27 ms 5072 KB Output is correct
4 Correct 1 ms 284 KB Output is correct
5 Correct 12 ms 3796 KB Output is correct
6 Correct 57 ms 7620 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 36 ms 6352 KB Output is correct
3 Correct 27 ms 5072 KB Output is correct
4 Correct 1 ms 284 KB Output is correct
5 Correct 12 ms 3796 KB Output is correct
6 Correct 57 ms 7620 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 71 ms 7240 KB Output is correct
9 Correct 79 ms 8548 KB Output is correct
10 Correct 104 ms 11324 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 36 ms 6352 KB Output is correct
3 Correct 27 ms 5072 KB Output is correct
4 Correct 1 ms 284 KB Output is correct
5 Correct 12 ms 3796 KB Output is correct
6 Correct 57 ms 7620 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 71 ms 7240 KB Output is correct
9 Correct 79 ms 8548 KB Output is correct
10 Correct 104 ms 11324 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Incorrect 81 ms 10916 KB wrong motion
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB wrong motion
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 256 KB wrong motion
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 256 KB wrong motion
2 Halted 0 ms 0 KB -