제출 #1039512

#제출 시각아이디문제언어결과실행 시간메모리
1039512juicyBroken Device (JOI17_broken_device)C++17
100 / 100
35 ms2932 KiB
#include "Annalib.h"

#include <bits/stdc++.h>

using namespace std;

namespace {
  void __print() {
    cerr << "]\n";
  }

  template<class T, class... V>
  void __print(T t, V... v) {
    cerr << t;
    if (sizeof...(v)) {
      cerr << ", ";
    }
    __print(v...);
  }

  #define debug(x...) cerr << "["<< #x << "] = ["; __print(x);

  void set(int i, string s) {
    for (auto j : {0, 1, 2}) {
      Set(i + j, s[j] - '0');
    }
  }

  void msg(int i, int type) {
    if (type == 0) {
      set(i, "000");
    } else if (type == 1) {
      set(i, "011");
    } else if (type == 2) {
      set(i, "101");
    } else if (type == 3) {
      set(i, "111");
    } else if (type == 4) {
      set(i, "110");
    } else if (type == 5) {
      set(i, "001");
    } else if (type == 6) {
      set(i, "010");
    } else {
      set(i, "100");
    }
  }

  int conv(string s) {
    if (s == "10") {
      return 1;
    }
    if (s == "01") {
      return 2;
    }
    if (s == "00") {
      return 7;
    }
    return 3;
  }
}

void Anna(int N, long long X, int K, int *P) {
  vector<bool> broke(N);
  for (int i = 0; i < K; ++i) {
    broke[P[i]] = 1;
  }
  int ptr = 0;
  for (int i = 0; i < N; i += 3) {
    if (ptr == 60) {
      msg(i, 0);
      continue;
    }
    int cnt = 0;
    for (auto j : {0, 1, 2}) {
      cnt += broke[i + j];
    }
    if (cnt > 1) {
      msg(i, 0);
    } else if (cnt == 0) {
      string m;
      m += (X >> ptr++ & 1) + '0';
      m += (X >> ptr++ & 1) + '0';
      msg(i, conv(m));
    } else {
      int c = X >> ptr++ & 1;
      if (c == 0) {
        if (!broke[i + 1]) {
          msg(i, 6);
        } else {
          int d = X >> ptr++ & 1;
          msg(i, d ? 2 : 7);
        }
      } else {
        msg(i, broke[i + 2] ? 4 : 5);
      }
    }
  }
}
#include "Brunolib.h"

#include <bits/stdc++.h>

using namespace std;

namespace {
  void __print() {
    cerr << "]\n";
  }

  template<class T, class... V>
  void __print(T t, V... v) {
    cerr << t;
    if (sizeof...(v)) {
      cerr << ", ";
    }
    __print(v...);
  }

  #define debug(x...) cerr << "["<< #x << "] = ["; __print(x);

  string decode(string m) {
    if (m == "000") {
      return "";
    }
    if (m == "011") {
      return "10";
    }
    if (m == "101") {
      return "01";
    }
    if (m == "111") {
      return "11";
    }
    if (m == "100") {
      return "00";
    }
    if (m == "110" || m == "001") {
      return "1";
    }
    return "0";
  }
}

long long Bruno(int N, int *A) {
  string S;
  for (int i = 0; i < N; i += 3) {
    string m;
    for (auto j : {0, 1, 2}) {
      m += A[i + j] + '0';
    }
    S += decode(m);
  }
  long long res = 0;
  for (int i = 0; i < 60; ++i) {
    if (S[i] == '1') {
      res += 1LL << i;
    }
  }
  return res;
}

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

Anna.cpp:8:8: warning: 'void {anonymous}::__print()' defined but not used [-Wunused-function]
    8 |   void __print() {
      |        ^~~~~~~

Bruno.cpp:8:8: warning: 'void {anonymous}::__print()' defined but not used [-Wunused-function]
    8 |   void __print() {
      |        ^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...