답안 #95017

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
95017 2019-01-26T19:31:07 Z Mohammad_Yasser 자동 인형 (IOI18_doll) C++14
9 / 100
110 ms 10924 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);
  }
} graph;

void create_circuit(int M, std::vector<int> A) {
  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:46: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]
   46 |     if (graph.turn[-graph.X[i]] < A.size()) {
doll.cpp:51: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]
   51 |     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 2 ms 204 KB Output is partially correct
2 Partially correct 86 ms 9528 KB Output is partially correct
3 Partially correct 104 ms 9600 KB Output is partially correct
4 Partially correct 107 ms 10032 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 2 ms 204 KB Output is partially correct
2 Partially correct 86 ms 9528 KB Output is partially correct
3 Partially correct 104 ms 9600 KB Output is partially correct
4 Partially correct 107 ms 10032 KB Output is partially correct
5 Partially correct 92 ms 10848 KB Output is partially correct
6 Partially correct 92 ms 10784 KB Output is partially correct
7 Partially correct 106 ms 10924 KB Output is partially correct
8 Partially correct 106 ms 10540 KB Output is partially correct
9 Partially correct 73 ms 9548 KB Output is partially correct
10 Partially correct 93 ms 10432 KB Output is partially correct
11 Partially correct 104 ms 10156 KB Output is partially correct
12 Partially correct 110 ms 9876 KB Output is partially correct
13 Partially correct 78 ms 10168 KB Output is partially correct
14 Partially correct 82 ms 10296 KB Output is partially correct
15 Partially correct 80 ms 10424 KB Output is partially correct
16 Partially correct 3 ms 588 KB Output is partially correct
17 Runtime error 22 ms 6680 KB Execution killed with signal 11
18 Halted 0 ms 0 KB -