QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#424986#3223. Cellular AutomatonrizynvuWA 0ms3900kbC++141.6kb2024-05-29 20:32:122024-05-29 20:32:12

Judging History

你现在查看的是最新测评结果

  • [2024-05-29 20:32:12]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3900kb
  • [2024-05-29 20:32:12]
  • 提交

answer

#include<bits/stdc++.h>
const int maxn = 1 << 7;
int dis[maxn], vis[maxn];
std::vector<std::pair<int, int> > to[maxn];
int S[maxn];
int main() {
   int w, m, n;
   scanf("%d", &w), m = 1 << w * 2, n = m << 1;
   for (int i = 0; i < n; i++) scanf("%1d", &S[i]);
   auto check = [&](int lim) {
      for (int u = 0; u < m; u++)
         to[u].clear(), dis[u] = 1e9, vis[u] = 0;
      for (int u = 0; u < m; u++)
         for (int w : {0, 1}) {
            int p = (u << 1) | w, v = p & (m - 1);
            if (p <= lim)
               to[u].emplace_back(v, w - S[p]), to[v].emplace_back(u, S[p] - w);
            else if (! w)
               to[u].emplace_back(v, 0), to[v].emplace_back(u, 1);
            else
               to[u].emplace_back(v, 1), to[v].emplace_back(u, 0);
         }
      std::queue<int> Q;
      dis[0] = 0, Q.push(0);
      while (! Q.empty() && dis[0] >= 0) {
         int u = Q.front();
         Q.pop(), vis[u] = 0;
         for (auto _ : to[u]) {
            int v = _.first, w = _.second;
            if (dis[u] + w < dis[v])
               dis[v] = dis[u] + w, ! vis[v] && (Q.push(v), vis[v] = 1);
         }
      }
      return dis[0] >= 0;
   };
   if (check(n - 1)) {
      for (int i = 0; i < n; i++) printf("%d", S[i]);
      return puts(""), 0;
   }
   for (int i = n - 1; ~ i; i--)
      if ((S[i] ^= 1) && check(i)) {
         for (int j = i + 1; j < n; j++)
            S[j] = 0, S[j] ^= ! check(j);
         for (int j = 0; j < n; j++) printf("%d", S[j]);
         return puts(""), 0;
      }
   puts("-1");
   return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3900kb

input:

1
11111111

output:

-1

result:

wrong answer 1st lines differ - expected: 'no', found: '-1'