Submission #708745

# Submission time Handle Problem Language Result Execution time Memory
708745 2023-03-12T08:58:02 Z ntdxl05 Ancient Machine (JOI21_ancient_machine) C++17
0 / 100
65 ms 10744 KB
#include <bits/stdc++.h>
#include "Anna.h"
#include <vector>
using namespace std;

namespace {

int variable_example = 0;

}

void Anna(int N, std::vector<char> S) {
const int dc[] = {'X', 'Y', 'Z'};
int idc[256];
  for (int i = 0; i < 3; i++) idc[dc[i]] = i;
  for (int i = 0; i < N; i++) {
    Send(idc[S[i]] >> 1 & 1);
    Send(idc[S[i]] & 1);
  }
}
#include <bits/stdc++.h>
#include "Bruno.h"
#include <vector>

using namespace std;

namespace {

// int variable_example = 0;

const int inf = 1e9;

int FunctionExample(int P) { return 1 - P; }

template<class U, class V>
bool minz(U &a, V b) {
  if (a > b) return a = b, 1;
  return 0;
}
template<class U, class V>
bool maxz(U &a, V b) {
  if (a < b) return a = b, 1;
  return 0;
}

}  // namespace

void Bruno(int N, int L, std::vector<int> A) {
const int dc[] = {'X', 'Y', 'Z'};
int idc[256];
  for (int i = 0; i < L; i++) {
    // variable_example += FunctionExample(A[i]);
  }

  vector<char> S(N);
  for (int i = 0; i < N; i++) S[i] = dc[A[i << 1] << 1 | A[i << 1 | 1]];
  // vector<int> dp(1 << N, -inf), trc(1 << N, -1);
  // dp[0] = 0;
  // for (int msk = 0; msk < (1 << N) - 1; msk++) {
  //   vector<int> b(N);
  //   for (int i = 0; i < N; i++) b[i] = msk >> i & 1;
  //   for (int i = 0; i < N; i++) {
  //     if (b[i]) continue;
  //     int l = i - 1, r = i + 1;
  //     for (; ~l && !b[l]; l--);
  //     for (; r < N && !b[r]; r++);
  //     bool e = ~l && r < N && S[i] == 'Y' && S[l] == 'X' && S[r] == 'Z';
  //     if (maxz(dp[msk | 1 << i], dp[msk] + e)) trc[msk | 1 << i] = i;
  //   }
  // }

  // int cr = (1 << N) - 1;
  // while (cr) {
  //   auto &t = trc[cr];
  //   Remove(t);
  //   cr ^= 1 << t;
  // }

  while (S.size() && S.back() ^ 'Z') {
    Remove(S.size() - 1);
    S.pop_back();
  }
  int p = 0;
  for (; p < S.size() && S[p] ^ 'X'; p++) Remove(p);
  if ((int)S.size() - p < 3) {
    for (int i = 0; i < S.size(); i++) Remove(i);
    return ;
  }
  // cerr << N << "\n"; cerr << p << " "; for (auto c: S) cout << c; cout << "\n";
  vector<int> vv;
  for (int i = p; i < S.size(); i++) {
    if (!vv.size() || ((S[vv.back()] != 'Y') ^ (S[i] != 'Y'))) vv.push_back(i);
    else if (i < S.size() - 1) Remove(i);
  }
  Remove(vv.back());
  vv.back() = S.size() - 1;
  // for (auto v: vv) cerr << v << " "; cerr << "\n";
  // return ;

  vector<int> Lf(N, -1), Rt(N, N), used(N);
  set<int> st;
  for (int i = 0; i < vv.size(); i++) {
    if (!(S[vv[i]] ^ 'Y') && !(S[vv[i - 1]] ^ 'X') && !(S[vv[i + 1]] ^ 'Z')) st.insert(vv[i]);
    if (i) Lf[vv[i]] = vv[i - 1];
    if (i < vv.size() - 1) Rt[vv[i]] = vv[i + 1];
  }
  while (st.size()) {
    int u = *begin(st); st.erase(begin(st));
    Remove(u); used[u] = 1;
    // cerr << u << "\n";
    int v = Rt[Rt[u]];
    if (v < N) {
      Remove(Rt[u]); used[Rt[u]] = 1;
      // cerr << "R " << Rt[u] << "\n";
      Lf[v] = Lf[u];
      Rt[Lf[u]] = v;
      if (!(S[Rt[v]] ^ 'Z')) st.insert(v);
    }
    else {
      Remove(Lf[u]); used[Lf[u]] = 1;
      // cerr << "L " << Lf[u] << "\n";
      v = Lf[Lf[u]];
      if (~v) {
        Rt[v] = Rt[u];
        Lf[Rt[u]] = v;
        if (!(S[Lf[v]] ^ 'X')) st.insert(v);
      }
    }
  }

  for (auto v: vv) {
    if (!used[v]) {
      // cerr << "O " << v << "\n";
      Remove(v);
    }
  }
}

Compilation message

Anna.cpp: In function 'void Anna(int, std::vector<char>)':
Anna.cpp:17:18: warning: array subscript has type 'char' [-Wchar-subscripts]
   17 |     Send(idc[S[i]] >> 1 & 1);
      |                  ^
Anna.cpp:18:18: warning: array subscript has type 'char' [-Wchar-subscripts]
   18 |     Send(idc[S[i]] & 1);
      |                  ^
Anna.cpp: At global scope:
Anna.cpp:8:5: warning: '{anonymous}::variable_example' defined but not used [-Wunused-variable]
    8 | int variable_example = 0;
      |     ^~~~~~~~~~~~~~~~

Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:64:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |   for (; p < S.size() && S[p] ^ 'X'; p++) Remove(p);
      |          ~~^~~~~~~~~~
Bruno.cpp:66:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |     for (int i = 0; i < S.size(); i++) Remove(i);
      |                     ~~^~~~~~~~~~
Bruno.cpp:71:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |   for (int i = p; i < S.size(); i++) {
      |                   ~~^~~~~~~~~~
Bruno.cpp:73:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |     else if (i < S.size() - 1) Remove(i);
      |              ~~^~~~~~~~~~~~~~
Bruno.cpp:82:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |   for (int i = 0; i < vv.size(); i++) {
      |                   ~~^~~~~~~~~~~
Bruno.cpp:85:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   85 |     if (i < vv.size() - 1) Rt[vv[i]] = vv[i + 1];
      |         ~~^~~~~~~~~~~~~~~
Bruno.cpp:30:5: warning: unused variable 'idc' [-Wunused-variable]
   30 | int idc[256];
      |     ^~~
Bruno.cpp: At global scope:
Bruno.cpp:13:5: warning: 'int {anonymous}::FunctionExample(int)' defined but not used [-Wunused-function]
   13 | int FunctionExample(int P) { return 1 - P; }
      |     ^~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 520 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 65 ms 10744 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -