Submission #514019

#TimeUsernameProblemLanguageResultExecution timeMemory
5140198e7Stray Cat (JOI20_stray)C++17
76 / 100
50 ms15704 KiB
#include "Anthony.h"
#include <vector>
#include <bits/stdc++.h>
#define maxn 20005
#define pii pair<int, int>
using namespace std;
namespace {
	vector<pii> adj[maxn];
	int res[maxn];
	int arr[6] = {0, 0, 1, 0, 1, 1};
	const int inf = 8e7;
	void dfs(int n, int par, int ind, int prv) {
		int deg = adj[n].size() - (par == -1 ? 0 : 1);
		if (deg == 1) {
			for (auto [v, id]:adj[n]) {
				if (v != par) {
					res[id] = arr[ind];
					dfs(v, n, (ind+1)%6, res[id]);
				}
			}
		} else {
			for (auto [v, id]:adj[n]) {
				if (v != par) {
					res[id] = prv ^ 1;
					dfs(v, n, res[id] ? 5 : 1, res[id]);
				}
			}
		}
	}	
}; 

vector<int> Mark(int N, int M, int A, int B,
                      vector<int> U, vector<int> V) {
	for (int i = 0;i < M;i++) adj[U[i]].push_back({V[i], i}), adj[V[i]].push_back({U[i], i});
	vector<int> X(M);
	dfs(0, -1, 0, 0);	
	for (int i = 0;i < M;i++) X[i] = res[i];
	return X;
}
#include "Catherine.h"
#include <vector>
#include "assert.h"
using namespace std;

namespace {
	int A, B;
	bool type = 0;
	int prv = 0, step = 0, mask = 0;
	int check[6] = {11, 22, 44, 25, 50, 37};
};  

void Init(int A, int B) {
  ::A = A;
  ::B = B;
}

int Move(vector<int> y) {	
	int sum = y[0] + y[1];
	sum += (step ? 1 : 0);	
	if (sum > 2) {
		step++;
		if (y[0] == 0 || y[1] == 0) {
			return -1;
		} 
		if (step > 1) y[prv]++;
		prv = y[0] == 1 ? 0 : 1;
		return prv;
	} else {
		if (step) sum--;
		step++;
		if (sum == 1) {
			if (type && step == 7) {
				bool match = 0;
				for (int i = 0;i < 6;i++) {
					if (mask == check[i]) match = 1;
				}	
				if (match) return -1;
			}
			prv = y[0] == 1 ? 0 : 1;
			if (step < 7) mask = mask * 2 + prv;
			return prv;
		} else {
			if (sum == 0) return -1;
			prv = y[0] ? 0 : 1;
			type = 1;
			mask = mask * 2 + prv;
			return prv;	
		}
	}
}
/*
11 10 2 6 6
0 2
0 3
0 4
3 5
5 7
5 8
7 10
4 6
6 9
9 1
*/
#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...