This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "Anthony.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pi;
namespace {
int sub[20005], hv[20005], w[20005], cdepth[20005], rev;
vector<int> edges;
vector<pi> AdjList[20005];
queue<int> q;
int cnt[12] = {1,0,0,1,0,1,1,0,0,1,0,1};
void genchain(int x, int p, int eweight){
//cerr << x << ' ' << p << ' ' << eweight << '\n';
int c = 0;
for (auto it : AdjList[x]){
if (it.first == p) continue;
c++;
}
if (c >= 2){
if (eweight == 1) cdepth[x] = 1;
else cdepth[x] = 0;
for (auto it : AdjList[x]){
if (it.first == p) continue;
cdepth[it.first] = cdepth[x] + 1;
edges[it.second] = cnt[cdepth[x]%12];
genchain(it.first,x,edges[it.second]);
}
}
else{
for (auto it : AdjList[x]){
if (it.first == p) continue;
cdepth[it.first] = cdepth[x] + 1;
edges[it.second] = cnt[cdepth[x]%12];
genchain(it.first,x,edges[it.second]);
}
}
}
} // namespace
vector<int> Mark(int N, int M, int A, int B,vector<int> U,vector<int> V) {
for (int i = 0; i < N; ++i){
AdjList[i].clear();
cdepth[i] = -1;
}
edges.resize(M,-1);
for (int i = 0; i < M; ++i){
AdjList[U[i]].push_back(pi(V[i],i));
AdjList[V[i]].push_back(pi(U[i],i));
}
cdepth[0] = 0;
genchain(0,-1,0);
for (auto it : edges){
//cerr << it << ' ';
}
//cerr << '\n';
return edges;
}
#include "Catherine.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pi;
namespace {
int stage = 0;
int cnt[12] = {1,0,0,1,0,1,1,0,0,1,0,1};
int br[12][5];
vector<int> last;
} // namespace
void Init(int A, int B) {
last.clear();
stage = 0;
for (int i = 0; i < 12; ++i){
for (int j = 0; j < 5; ++j){
br[i][j] = cnt[(i+j)%12];
}
}
}
int Move(std::vector<int> y) {
/*
cerr << stage << '\n';
for (auto it : last){
cerr << it << ' ';
}
cerr << '\n';
*/
int mv = -1;
if (stage == 0){
if (y[0] + y[1] == 1){
stage = 2;
if (y[0]){
last.push_back(0);
return 0;
}
else{
last.push_back(1);
return 1;
}
}
else if (y[0] + y[1] > 2){
stage = 2;
if (y[0] == 1) mv = 0;
else mv = 1;
last.push_back(mv);
return mv;
}
stage = 1;
if (y[0] == 2){
last.push_back(0);
last.push_back(0);
return 0;
}
else if (y[1] == 2){
last.push_back(1);
last.push_back(1);
return 1;
}
else{
if (y[0] != 0) mv = 0;
else mv = 1;
last.push_back(1-mv);
last.push_back(mv);
return mv;
}
}
else if (stage == 1){
if (y[0] + y[1] == 1){
if (last.size() >= 4){
int checkers[12];
for (int i = 0; i < 12; ++i) checkers[i] = 1;
last.push_back((y[0] == 1 ? 0 : 1));
for (int i = 0; i < 5; ++i){
for (int j = 0; j < 12; ++j){
if (last[i] != br[j][i]) checkers[j] = 0;
}
}
last.pop_back();
for (int i = 0; i < 12; ++i){
if (checkers[i]){
stage = 2;
last.push_back(last.back());
return -1;
}
}
}
}
if (y[0] == 0 && y[1] == 0){
stage = 2;
last.push_back(last.back());
return -1;
}
else if (y[0] + y[1] == 1){
if (y[0] == 1) mv = 0;
else mv = 1;
last.push_back(mv);
return mv;
}
else{
stage = 2;
if (y[0] == 0){
last.push_back(last.back());
return -1;
}
else if (y[1] == 0){
last.push_back(last.back());
return -1;
}
else{
int x = last.back();
last.push_back(1-x);
return 1-x;
}
}
}
else{
if (y[0] + y[1] == 1){
if (y[1] == 1){
last.push_back(1);
return 1;
}
if (y[0] == 1){
last.push_back(0);
return 0;
}
}
else{
int x = last.back();
last.push_back(1-x);
return 1-x;
}
}
}
Compilation message (stderr)
Anthony.cpp: In function 'std::vector<int> Mark(int, int, int, int, std::vector<int>, std::vector<int>)':
Anthony.cpp:57:12: warning: unused variable 'it' [-Wunused-variable]
for (auto it : edges){
^~
Anthony.cpp: At global scope:
Anthony.cpp:10:54: warning: '{anonymous}::rev' defined but not used [-Wunused-variable]
int sub[20005], hv[20005], w[20005], cdepth[20005], rev;
^~~
Anthony.cpp:10:29: warning: '{anonymous}::w' defined but not used [-Wunused-variable]
int sub[20005], hv[20005], w[20005], cdepth[20005], rev;
^
Anthony.cpp:10:18: warning: '{anonymous}::hv' defined but not used [-Wunused-variable]
int sub[20005], hv[20005], w[20005], cdepth[20005], rev;
^~
Anthony.cpp:10:6: warning: '{anonymous}::sub' defined but not used [-Wunused-variable]
int sub[20005], hv[20005], w[20005], cdepth[20005], rev;
^~~
Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:144:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |