답안 #543089

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
543089 2022-03-29T09:09:31 Z abc864197532 Ancient Machine (JOI21_ancient_machine) C++17
0 / 100
50 ms 8316 KB
#include "Anna.h"
#include <vector>

namespace {

int variable_example = 0;

}

void Anna(int N, std::vector<char> S) {
  for (int i = 0; i < N; i += 3) {
    int now = 0;
    for (int j = i; j < i + 3 && j < N; ++j)
      now = now * 3 + S[j] - 'X';
    for (int j = 4; ~j; --j)
      Send(now >> j & 1);
  }
}
#include "Bruno.h"
#include <vector>
#include <set>
#include <tuple>
 
namespace {
 
int variable_example = 0;
 
int FunctionExample(int P) { return 1 - P; }
 
}  // namespace
 
void Bruno(int N, int L, std::vector<int> A) {
  std::vector <char> S(N);
  int pt = 0;
  for (int i = 0; i < L; i += 5) {
    int now = 0;
    for (int j = i; j < i + 5; ++j)
      now = now * 2 + A[j];
    if (pt + 1 == N)
      S[pt] = now + 'X';
    else if (pt + 2 == N) {
      S[pt] = now / 3 + 'X';
      S[pt + 1] = now % 3 + 'X';
    } else {
      S[pt] = now / 9 + 'X';
      S[pt + 1] = (now / 3) % 3 + 'X';
      S[pt + 2] = now % 3 + 'X';
    }
    pt += 3;
  }
  std::vector <int> X, Z;
  std::vector <std::pair <int, int>> Y;
  std::set <int> Se;
  for (int i = 0; i < N; ++i)
    Se.insert(i);
  for (int i = 0; i < N; ++i) {
    if (S[i] == 'X')
      X.push_back(i);
    else if (S[i] == 'Y' && !X.empty())
      Y.emplace_back(X.back(), i), X.pop_back();
    else if (S[i] == 'Z') {
      while (!Y.empty()) {
        int a, b; std::tie(a, b) = Y.back();
        std::vector <int> del;
        for (auto it = Se.lower_bound(a + 1); it != Se.end() && *it < b; ++it)
          Remove(*it), del.push_back(*it);
        for (auto it = Se.lower_bound(b + 1); it != Se.end() && *it < i; ++it)
          Remove(*it), del.push_back(*it);
        Remove(b), del.push_back(b);
        for (int i : del)
          Se.erase(i);
        Y.pop_back();
        X.push_back(a);
      }
    }
    while (!X.empty() && !Se.count(X.back()))
      X.pop_back();
    while (!Y.empty() && !Se.count(Y.back().first) && !Se.count(Y.back().second))
      Y.pop_back();
  }
  for (int i : Se)
    Remove(i);
}

Compilation message

Anna.cpp:6:5: warning: '{anonymous}::variable_example' defined but not used [-Wunused-variable]
    6 | int variable_example = 0;
      |     ^~~~~~~~~~~~~~~~

Bruno.cpp:10:5: warning: 'int {anonymous}::FunctionExample(int)' defined but not used [-Wunused-function]
   10 | int FunctionExample(int P) { return 1 - P; }
      |     ^~~~~~~~~~~~~~~
Bruno.cpp:8:5: warning: '{anonymous}::variable_example' defined but not used [-Wunused-variable]
    8 | int variable_example = 0;
      |     ^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 508 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 50 ms 8316 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -