답안 #95016

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
95016 2019-01-26T19:30:07 Z Mohammad_Yasser 자동 인형 (IOI18_doll) C++14
9 / 100
140 ms 10552 KB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

struct Graph {
  int S = 1;
  int N = 200000;

  vector<int> X, Y, turn;

  void build(int node, int level, int first_turn) {
    if ((1 << level) > N) {
      turn[node] = first_turn;
      return;
    }

    X[node] = 2 * node;
    Y[node] = 2 * node + 1;
    build(X[node], level + 1, first_turn);
    build(Y[node], level + 1, first_turn + (1 << level));
    X[node] *= -1;
    Y[node] *= -1;
  }

  void build(int n) {
    N = n;
    while (S < N) {
      S <<= 1;
    }
    X.resize(S + 1);
    Y.resize(S + 1);
    turn = vector<int>(2 * S, -1);
    build(1, 0, 0);
  }
};

void create_circuit(int M, std::vector<int> A) {
  Graph graph;
  graph.build(A.size() + 1);

  vector<int> C(M + 1);
  for (int& x : C) {
    x = -1;
  }

  for (int i = graph.S / 2; i < graph.S; ++i) {
    if (graph.turn[-graph.X[i]] < A.size()) {
      graph.X[i] = A[graph.turn[-graph.X[i]]];
    } else {
      graph.X[i] = -1;
    }
    if (graph.turn[-graph.Y[i]] < A.size()) {
      graph.Y[i] = A[graph.turn[-graph.Y[i]]];
    } else {
      graph.Y[i] = -1;
    }
  }
  graph.Y[graph.S - 1] = 0;
  graph.X.erase(graph.X.begin());
  graph.Y.erase(graph.Y.begin());
  answer(C, graph.X, graph.Y);
}

Compilation message

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:47:33: warning: comparison of integer expressions of different signedness: '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     if (graph.turn[-graph.X[i]] < A.size()) {
doll.cpp:52:33: warning: comparison of integer expressions of different signedness: '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |     if (graph.turn[-graph.Y[i]] < A.size()) {
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 204 KB Output is partially correct
2 Partially correct 75 ms 9516 KB Output is partially correct
3 Partially correct 111 ms 9516 KB Output is partially correct
4 Partially correct 87 ms 10052 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 204 KB Output is partially correct
2 Partially correct 75 ms 9516 KB Output is partially correct
3 Partially correct 111 ms 9516 KB Output is partially correct
4 Partially correct 87 ms 10052 KB Output is partially correct
5 Partially correct 140 ms 10552 KB Output is partially correct
6 Partially correct 95 ms 10308 KB Output is partially correct
7 Partially correct 91 ms 10292 KB Output is partially correct
8 Partially correct 95 ms 10164 KB Output is partially correct
9 Partially correct 86 ms 9516 KB Output is partially correct
10 Partially correct 90 ms 10064 KB Output is partially correct
11 Partially correct 109 ms 10036 KB Output is partially correct
12 Partially correct 107 ms 9512 KB Output is partially correct
13 Partially correct 90 ms 9644 KB Output is partially correct
14 Partially correct 91 ms 9756 KB Output is partially correct
15 Partially correct 78 ms 9796 KB Output is partially correct
16 Partially correct 5 ms 588 KB Output is partially correct
17 Runtime error 32 ms 6576 KB Execution killed with signal 11
18 Halted 0 ms 0 KB -