제출 #1021244

#제출 시각아이디문제언어결과실행 시간메모리
1021244fv3자동 인형 (IOI18_doll)C++14
85.55 / 100
67 ms14472 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; vector<int> C; vector<int> X, Y; int lastSwitch = 0; int INF = 1 << 30; void make_connections(int cnt) { int origo = -X.size() - 1; int index = 0; int nt = 1; while (nt < cnt) nt *= 2; vector<int> st(2 * nt), label(2 * nt); for (int i = 2 * nt - cnt; i < 2 * nt; i++) st[i] = 1; for (int i = nt - 1; i >= 1; i--) st[i] = max(st[i*2], st[i*2|1]); label[1] = --lastSwitch; for (int i = 1; i < nt; i++) { if (!st[i]) continue; if (st[i * 2]) { if (i * 2 >= nt) { X.push_back(INF); } else { X.push_back(--lastSwitch); label[i*2] = lastSwitch; } } else { X.push_back(origo); } if ((2 * i | 1) >= nt) { Y.push_back(INF); } else { label[(2*i|1)] = --lastSwitch; Y.push_back(lastSwitch); } } } void simulate(vector<int> &A) { int nxt = 0; int index = C[0]; A.push_back(0); vector<int> state(X.size()); while (index != 0) { if (index < 0) { if (!state[-index - 1]) { state[-index-1] ^= 1; if (X[-index-1] == INF) { X[-index-1] = A[nxt]; } index = X[-index-1]; } else { state[-index-1] ^= 1; if (Y[-index-1] == INF) Y[-index-1] = A[nxt]; index = Y[-index-1]; } } else { index = C[index]; nxt++; } } } void create_circuit(int M, vector<int> A) { vector<vector<int>> adj(M + 1); const int N = A.size(); adj[0].push_back(A[0]); for (int i = 0; i < N - 1; i++) { adj[A[i]].push_back(A[i+1]); } adj[A.back()].push_back(0); C = vector<int>(M + 1); for (int i = 0; i < M + 1; i++) { if (adj[i].size() > 1) { C[i] = -X.size() - 1; make_connections(adj[i].size()); } else if (adj[i].size() == 1) C[i] = adj[i][0]; } simulate(A); answer(C, X, Y); }

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

doll.cpp: In function 'void make_connections(int)':
doll.cpp:14:6: warning: unused variable 'index' [-Wunused-variable]
   14 |  int index = 0;
      |      ^~~~~
#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...