답안 #925974

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
925974 2024-02-12T12:11:39 Z mickey080929 길고양이 (JOI20_stray) C++17
15 / 100
38 ms 16796 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] = {0, 1, 1, 0, 0, 1};
int read[6];

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;
		}
		assert(y[0] + y[1] == 2);
		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 = read[cnt-1];
		if (!y[0] || !y[1]) return -1;
		assert(y[read[cnt-1] ^ 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 = read[3];
		if (findDir()) return -1;
		return prv = read[4];
	}
}

Compilation message

Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:84:1: warning: control reaches end of non-void function [-Wreturn-type]
   84 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 28 ms 16132 KB Output is correct
2 Correct 0 ms 1296 KB Output is correct
3 Correct 23 ms 15236 KB Output is correct
4 Correct 34 ms 16796 KB Output is correct
5 Correct 38 ms 16784 KB Output is correct
6 Correct 26 ms 15564 KB Output is correct
7 Correct 31 ms 15476 KB Output is correct
8 Correct 32 ms 16252 KB Output is correct
9 Correct 32 ms 16248 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 28 ms 16132 KB Output is correct
2 Correct 0 ms 1296 KB Output is correct
3 Correct 23 ms 15236 KB Output is correct
4 Correct 34 ms 16796 KB Output is correct
5 Correct 38 ms 16784 KB Output is correct
6 Correct 26 ms 15564 KB Output is correct
7 Correct 31 ms 15476 KB Output is correct
8 Correct 32 ms 16252 KB Output is correct
9 Correct 32 ms 16248 KB Output is correct
10 Correct 26 ms 13688 KB Output is correct
11 Correct 30 ms 13632 KB Output is correct
12 Correct 28 ms 13684 KB Output is correct
13 Correct 30 ms 13668 KB Output is correct
14 Correct 27 ms 13780 KB Output is correct
15 Correct 30 ms 14196 KB Output is correct
16 Correct 31 ms 16180 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 13596 KB Output is correct
2 Correct 1 ms 1304 KB Output is correct
3 Correct 23 ms 12936 KB Output is correct
4 Correct 36 ms 14720 KB Output is correct
5 Correct 31 ms 14672 KB Output is correct
6 Correct 26 ms 13168 KB Output is correct
7 Correct 26 ms 13176 KB Output is correct
8 Correct 28 ms 13820 KB Output is correct
9 Correct 30 ms 13984 KB Output is correct
10 Correct 28 ms 13764 KB Output is correct
11 Correct 28 ms 13680 KB Output is correct
12 Correct 31 ms 13668 KB Output is correct
13 Correct 34 ms 13712 KB Output is correct
14 Correct 30 ms 13948 KB Output is correct
15 Correct 30 ms 13940 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 13596 KB Output is correct
2 Correct 1 ms 1304 KB Output is correct
3 Correct 23 ms 12936 KB Output is correct
4 Correct 36 ms 14720 KB Output is correct
5 Correct 31 ms 14672 KB Output is correct
6 Correct 26 ms 13168 KB Output is correct
7 Correct 26 ms 13176 KB Output is correct
8 Correct 28 ms 13820 KB Output is correct
9 Correct 30 ms 13984 KB Output is correct
10 Correct 28 ms 13764 KB Output is correct
11 Correct 28 ms 13680 KB Output is correct
12 Correct 31 ms 13668 KB Output is correct
13 Correct 34 ms 13712 KB Output is correct
14 Correct 30 ms 13948 KB Output is correct
15 Correct 30 ms 13940 KB Output is correct
16 Correct 23 ms 11632 KB Output is correct
17 Correct 24 ms 11632 KB Output is correct
18 Correct 28 ms 11748 KB Output is correct
19 Correct 26 ms 11708 KB Output is correct
20 Correct 32 ms 12336 KB Output is correct
21 Correct 26 ms 12144 KB Output is correct
22 Correct 36 ms 14068 KB Output is correct
23 Correct 25 ms 11896 KB Output is correct
24 Correct 27 ms 11840 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1572 KB Output is correct
2 Correct 1 ms 1308 KB Output is correct
3 Correct 2 ms 1564 KB Output is correct
4 Correct 1 ms 1568 KB Output is correct
5 Correct 2 ms 1560 KB Output is correct
6 Correct 2 ms 1640 KB Output is correct
7 Incorrect 1 ms 1568 KB Wrong Answer [5]
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 27 ms 11384 KB Output is correct
2 Incorrect 24 ms 11352 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 24 ms 11340 KB Output is correct
2 Incorrect 28 ms 11376 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -