답안 #925965

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
925965 2024-02-12T12:03:18 Z mickey080929 길고양이 (JOI20_stray) C++17
15 / 100
43 ms 16688 KB
#include "Anthony.h"
#include <bits/stdc++.h>

using namespace std;

int seq[] = {0, 1, 1, 0, 0, 1};

vector<int> ret;
vector<pair<int,int>> adj[20010];

void dfs(int x, int p, int idx, int pc) {
	if (adj[x].size() == 1) return;
	if (adj[x].size() == 2) {
		if (adj[x][0].first == p) swap(adj[x][0], adj[x][1]);
		if (idx == -1) idx = pc;
		ret[adj[x][0].second] = seq[(idx+1) % 6];
		dfs(adj[x][0].first, x, (idx+1) % 6, seq[(idx+1) % 6]);
		return;
	}
	for (auto &[y, i] : adj[x]) {
		if (y == p) continue;
		ret[i] = pc ^ 1;
		dfs(y, x, -1, pc ^ 1);
	}
}

vector<int> Mark(int N, int M, int A, int B, vector<int> U, vector<int> V) {
	ret.resize(M);
	for (int i=0; i<M; i++) {
		adj[U[i]].push_back({V[i], i});
		adj[V[i]].push_back({U[i], i});
	}
	if (A >= 3) {
		vector<int> dist(N, -1);
		queue<int> q;
		q.push(0);
		dist[0] = 0;
		while (!q.empty()) {
			int x = q.front();
			q.pop();
			for (auto &[y, _] : adj[x]) {
				if (dist[y] == -1) {
					dist[y] = dist[x] + 1;
					q.push(y);
				}
			}
		}
		for (int i=0; i<M; i++) {
			ret[i] = min(dist[U[i]], dist[V[i]]) % 3;
		}
		return ret;
	}
	for (auto &[y, i] : adj[0]) {
		ret[i] = 0;
		dfs(y, 0, -1, 0);
	}
	return ret;
}
#include "Catherine.h"
#include <bits/stdc++.h>

using namespace std;

int A, B;

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

int cnt = 0;
int prv = -1;
int seq[6] = {1, 1, 0, 1, 0, 0};
int read[6];
int dir = 0;

bool findDir() {
	for (int i=0; i<6; i++) {
		bool f = true;
		for (int j=0; j<6; j++) {
			if (read[(i+j) % 6] != seq[j]) {
				f = false;
				break;
			}
		}
		if (f) return true;
	}
	return false;
}

int Move(vector<int> y) {
	if (A >= 3) {
		if (y[0] && y[1]) return 0;
		if (y[1] && y[2]) return 1;
		if (y[2] && y[0]) return 2;
		if (y[0]) return 0;
		if (y[1]) return 1;
		if (y[2]) return 2;
		assert(0);
	}
	cnt ++;
	if (prv != -1) {
		if (y[0] + y[1] == 1) {
			if (y[0]) prv = 0;
			else prv = 1;
			return prv;
		}
		prv ^= 1;
		return prv;
	}
	if (cnt == 1) {
		if (y[0] == 1 && y[1] != 1) {
			return prv = 0;
		}
		if (y[0] != 1 && y[1] == 1) {
			return prv = 1;
		}
		if (y[0] == 2) {
			read[0] = read[1] = 0;
			return 0;
		}
		if (y[0] == 1) {
			read[0] = 0; read[1] = 1;
			return 1;
		}
		read[0] = read[1] = 1;
		return 1;
	}
	if (y[0] + y[1] != 1) {
		prv = 0;
		if (!y[0] || !y[1] || y[0] + y[1] == 0) return -1;
		return prv = (read[cnt-1] ^ 1);
	}
	read[cnt] = y[1];
	if (cnt == 4) {
		read[5] = 3 - read[0] - read[1] - read[2] - read[3] - read[4];
		prv = 0;
		if (findDir()) return -1;
		return prv = read[4];
	}
}

Compilation message

Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:83:1: warning: control reaches end of non-void function [-Wreturn-type]
   83 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 32 ms 15604 KB Output is correct
2 Correct 1 ms 1308 KB Output is correct
3 Correct 23 ms 15236 KB Output is correct
4 Correct 41 ms 16460 KB Output is correct
5 Correct 39 ms 16688 KB Output is correct
6 Correct 39 ms 15464 KB Output is correct
7 Correct 27 ms 15472 KB Output is correct
8 Correct 32 ms 16240 KB Output is correct
9 Correct 36 ms 16040 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 32 ms 15604 KB Output is correct
2 Correct 1 ms 1308 KB Output is correct
3 Correct 23 ms 15236 KB Output is correct
4 Correct 41 ms 16460 KB Output is correct
5 Correct 39 ms 16688 KB Output is correct
6 Correct 39 ms 15464 KB Output is correct
7 Correct 27 ms 15472 KB Output is correct
8 Correct 32 ms 16240 KB Output is correct
9 Correct 36 ms 16040 KB Output is correct
10 Correct 30 ms 13656 KB Output is correct
11 Correct 26 ms 13700 KB Output is correct
12 Correct 26 ms 13604 KB Output is correct
13 Correct 25 ms 13680 KB Output is correct
14 Correct 28 ms 13944 KB Output is correct
15 Correct 37 ms 14212 KB Output is correct
16 Correct 34 ms 16248 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 13220 KB Output is correct
2 Correct 1 ms 1296 KB Output is correct
3 Correct 23 ms 13032 KB Output is correct
4 Correct 35 ms 15024 KB Output is correct
5 Correct 35 ms 14676 KB Output is correct
6 Correct 34 ms 13020 KB Output is correct
7 Correct 26 ms 13172 KB Output is correct
8 Correct 32 ms 13932 KB Output is correct
9 Correct 31 ms 14016 KB Output is correct
10 Correct 40 ms 13616 KB Output is correct
11 Correct 30 ms 13672 KB Output is correct
12 Correct 28 ms 13700 KB Output is correct
13 Correct 38 ms 13600 KB Output is correct
14 Correct 43 ms 13828 KB Output is correct
15 Correct 30 ms 13956 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 13220 KB Output is correct
2 Correct 1 ms 1296 KB Output is correct
3 Correct 23 ms 13032 KB Output is correct
4 Correct 35 ms 15024 KB Output is correct
5 Correct 35 ms 14676 KB Output is correct
6 Correct 34 ms 13020 KB Output is correct
7 Correct 26 ms 13172 KB Output is correct
8 Correct 32 ms 13932 KB Output is correct
9 Correct 31 ms 14016 KB Output is correct
10 Correct 40 ms 13616 KB Output is correct
11 Correct 30 ms 13672 KB Output is correct
12 Correct 28 ms 13700 KB Output is correct
13 Correct 38 ms 13600 KB Output is correct
14 Correct 43 ms 13828 KB Output is correct
15 Correct 30 ms 13956 KB Output is correct
16 Correct 23 ms 11636 KB Output is correct
17 Correct 23 ms 11624 KB Output is correct
18 Correct 30 ms 11552 KB Output is correct
19 Correct 27 ms 11888 KB Output is correct
20 Correct 37 ms 12092 KB Output is correct
21 Correct 30 ms 12060 KB Output is correct
22 Correct 30 ms 14168 KB Output is correct
23 Correct 25 ms 11888 KB Output is correct
24 Correct 25 ms 11884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1568 KB Output is correct
2 Correct 1 ms 1308 KB Output is correct
3 Correct 2 ms 1808 KB Output is correct
4 Correct 2 ms 1552 KB Output is correct
5 Correct 2 ms 1560 KB Output is correct
6 Correct 2 ms 1568 KB Output is correct
7 Incorrect 1 ms 1564 KB Wrong Answer [5]
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 11200 KB Output is correct
2 Incorrect 24 ms 11324 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 11308 KB Output is correct
2 Incorrect 24 ms 11372 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -