제출 #132644

#제출 시각아이디문제언어결과실행 시간메모리
132644dvdg6566자동 인형 (IOI18_doll)C++14
6 / 100
102 ms11048 KiB
#include "doll.h"
#include<bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
#define pb emplace_back
#define SZ(x) (int)x.size()

inline int MSB(unsigned int x){
  return 32-__builtin_clz(x);
}

int c=-1;
vi C,X,Y;
vi occ[100100];

void fill(int x, int occnum, int skip, int startind){
  if (x == 2){
    X.pb(occ[occnum][startind]);
    Y.pb(occ[occnum][skip + startind]);
    return;
  }
}

void create_circuit(int M, std::vector<int> A) {
  int N = A.size();
  C.resize(M+1,0);
  occ[0].pb(A[0]);
  for (int i=0;i<N-1;++i){
    occ[A[i]].pb(A[i+1]);
  }
  occ[A[N-1]].pb(0);
  for (int i=0;i<=M;++i){
    if (SZ(occ[i]) == 0)continue;
    if (SZ(occ[i]) == 1){
      C[i] = occ[i][0];
    }else{
      C[i] = c--;
      fill(SZ(occ[i]), i, 1, 0);
    }
  }
  // for (int i=0;i<=M;++i)cout<<C[i]<<' ';cout<<'\n';
  answer(C,X,Y);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...