Submission #259465

#TimeUsernameProblemLanguageResultExecution timeMemory
259465BruteforcemanStray Cat (JOI20_stray)C++17
76 / 100
74 ms16436 KiB
#include "bits/stdc++.h" #include "Anthony.h" using namespace std; namespace { const int maxn = 2e4 + 10; const int t[] = {1, 0, 0, 1, 1, 0}; const int len = 6; int l[maxn], r[maxn]; vector <int> g[maxn]; int mark[maxn]; void dfs(int x, int par, int idx) { int child = 0; for(auto e : g[x]) { if(e != par) { child += 1; } } if(child == 1 && idx == -1) { for(idx = 0; idx < len; idx++) { if(t[idx] == mark[x]) { break; } } } for(auto e : g[x]) { int i = l[e] ^ r[e] ^ x; if(e != par) { if(child == 1) { mark[e] = t[(idx + 1) % len]; dfs(i, e, (idx + 1) % len); } else { mark[e] = mark[par] ^ 1; dfs(i, e, -1); } } } } } // namespace std::vector<int> Mark(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) { std::vector<int> X(M); for (int i = 0; i < N; i++) g[i].clear(); for (int i = 0; i < M; ++i) { l[i] = U[i]; r[i] = V[i]; g[l[i]].push_back(i); g[r[i]].push_back(i); } mark[M] = 0; dfs(0, M, -1); for(int i = 0; i < M; i++) X[i] = mark[i]; for(int i = 0; i < M; i++) { // cout << U[i] << ' ' << V[i] << ' ' << X[i] << endl; } return X; }
#include "bits/stdc++.h" #include "Catherine.h" using namespace std; namespace { const int len = 6; const int t[len] = {1, 0, 0, 1, 1, 0}; int arr[len]; int idx = -1; int A, B; int variable_example = 0; vector <int> unpack(vector <int> y) { vector <int> v; for(int i = 0; i < y.size(); i++) { while(y[i]--) v.push_back(i); } return v; } bool check() { for(int i = 0; i < len; i++) { bool bad = false; for(int j = 0; j < len; j++) { if(t[(i + j) % len] != arr[j]) bad = true; } if(not bad) return true; } return false; } int last = -1; } // namespace void Init(int A, int B) { ::A = A; ::B = B; } int Move(std::vector<int> y) { ++variable_example; vector <int> v = unpack(y); if(variable_example == 1 && v.size() == 2) { idx = 1; arr[idx - 1] = v[0]; arr[idx] = v[1]; return last = v[1]; } if(idx != -1) { if(v.size() == 1) { arr[idx + 1] = v[0]; idx += 1; if(idx == len - 1) { idx = -1; if(check()) return -1; else return last = v[0]; } else { return last = v[0]; } } else { idx = -1; if(y[0] == 0 || y[1] == 0) return -1; else return last = last ^ 1; } } if(v.size() == 1) return last = v[0]; else if(last == -1) { for(int i = 0; i < y.size(); i++) if(y[i] == 1) return last = i; } else return last = last ^ 1; }

Compilation message (stderr)

Catherine.cpp: In function 'std::vector<int> {anonymous}::unpack(std::vector<int>)':
Catherine.cpp:15:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0; i < y.size(); i++) {
                  ~~^~~~~~~~~~
Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:66:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < y.size(); i++) if(y[i] == 1) return last = i;
                    ~~^~~~~~~~~~
Catherine.cpp:69:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...