답안 #427624

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
427624 2021-06-14T17:58:56 Z amunduzbaev 길고양이 (JOI20_stray) C++14
0 / 100
60 ms 14052 KB
#include "Anthony.h"
#include "bits/stdc++.h"
using namespace std;
 
#define ff first
#define ss second
#define pb push_back
#define sz(x) (int)x.size()
 
const int N = 2e4+5;
 
namespace sol1{
	
	vector<int> res;
	vector<int> patt = {1, 0, 0, 1, 1, 0};
	vector<pair<int, int>> edges[N];
	
	
	void dfs(int u, int p = -1, int cur = 0, int in = 0){
		for(auto x : edges[u]){
			if(x.ff == p) continue;
			if(sz(edges[u]) == 2){
				res[x.ss] = patt[in];
				dfs(x.ff, u, res[x.ss], (in + 1) % 6);
			} else {
				res[x.ss] = cur ^ 1;
				if(cur) dfs(x.ff, u, cur ^ 1, 1);
				else dfs(x.ff, u, cur ^ 1, 2);
			}
		}
	}
	
	vector<int> Mark1(int n, int m, int a, int b, vector<int> u, vector<int> v){
		res.resize(m);
		for(int i=0;i<m;i++){
			int a = u[i] + 1, b = v[i] + 1;
			edges[a].pb({b, i}), edges[b].pb({a, i});
			res[i] = -1;
		} 
		
		edges[1].pb({-1, -1});
		dfs(1);
		
		//~ for(int i=0;i<m;i++) cout<<res[i]<<" ";
		//~ cout<<"\n";
		
		return res;
	}
}
 
namespace sol2{
	vector<int> Mark2(int n, int m, int a, int b, vector<int> u, vector<int> v){
		return {};
	}
}
 
vector<int> Mark(int n, int m, int a, int b, vector<int> u, vector<int> v) {
	if(a == 2) {
		return sol1::Mark1(n, m, a, b, u, v);
	} else {
		return sol2::Mark2(n, m, a, b, u, v);
	}
}
#include "Catherine.h"
#include "bits/stdc++.h"
using namespace std;
#define pb push_back
#define sz(x) (int)x.size()
 
vector<int> path;
int a;
 
void Init(int a, int b) { ::a = a; }
 
namespace sol1{
	vector<int> ppat = {1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0};
	int ok = 0, last = -1;
	vector<int> path;
	
	int Move(vector<int> y){
		if(ok){
			assert(~last);
			if(y[0] + y[1] + 1 > 2) return last ^= 1;
			if(y[0] == 0) return last = 1;
			if(y[1] == 0) return last = 0;
			assert(0); 
		}
		
		if(y[0] + y[1] + (last != -1) > 2){
			ok = 1;
			if(~last){
				if(min(y[0], y[1]) == 0) return -1;
				if(min(y[0], y[1]) == 1) return last ^= 1;
				assert(0);
			} else {
				if(y[0] == 1) return last = 0;
				if(y[1] == 1) return last = 1;
				assert(0);
			}
		} 
		
		if(y[0] + y[1] + (last != -1) == 1){
			ok = 1;
			if(y[0] == 1) return last = 0;
			if(y[1] == 1) return last = 1;
			return -1;
		}
		
		if(last == -1){
			if(y[0] == 2) { path.pb(0), path.pb(0); return last = 0; }
			else if(y[1] == 2) { path.pb(1), path.pb(1); return last = 1; }
			else { path.pb(0), path.pb(1); return last = 1; }
		} 
		else {
			if(y[0] == 1) last = 0, path.pb(0);
			if(y[1] == 1) last = 1, path.pb(1);
			
			if(sz(path) == 5){ ok = 1; 
				for(int i=0;i+5<=sz(ppat);i++){
					int l = i, r = i + 5 - 1, okk = 1;
					for(int j=l;j<=r;j++) okk &= (ppat[j] == path[j-i]);
					if(okk) return -1;
				} if(y[0]) return last = 0;
				else return last = 1;
			} else return last;
		}
	} 
}
 
namespace sol2{
	int Move(vector<int> y){
		return 0;
	} 
}
 
int Move(vector<int> y) {
	if(a == 2) return sol1::Move(y);
	else return sol2::Move(y);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 1392 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 1392 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 1384 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 1384 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1260 KB Output is correct
2 Correct 1 ms 1000 KB Output is correct
3 Correct 2 ms 1260 KB Output is correct
4 Correct 2 ms 1268 KB Output is correct
5 Correct 2 ms 1260 KB Output is correct
6 Correct 3 ms 1260 KB Output is correct
7 Correct 2 ms 1260 KB Output is correct
8 Correct 2 ms 1264 KB Output is correct
9 Correct 2 ms 1260 KB Output is correct
10 Correct 2 ms 1256 KB Output is correct
11 Correct 2 ms 1256 KB Output is correct
12 Correct 2 ms 1268 KB Output is correct
13 Correct 2 ms 1356 KB Output is correct
14 Correct 2 ms 1260 KB Output is correct
15 Correct 2 ms 1268 KB Output is correct
16 Correct 2 ms 1260 KB Output is correct
17 Correct 2 ms 1260 KB Output is correct
18 Correct 2 ms 1316 KB Output is correct
19 Correct 2 ms 1260 KB Output is correct
20 Correct 2 ms 1272 KB Output is correct
21 Correct 2 ms 1256 KB Output is correct
22 Correct 2 ms 1260 KB Output is correct
23 Correct 2 ms 1268 KB Output is correct
24 Correct 2 ms 1260 KB Output is correct
25 Correct 2 ms 1260 KB Output is correct
26 Incorrect 2 ms 1268 KB Wrong Answer [5]
27 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 11304 KB Output is correct
2 Correct 45 ms 12516 KB Output is correct
3 Correct 1 ms 1000 KB Output is correct
4 Correct 34 ms 11076 KB Output is correct
5 Correct 55 ms 14024 KB Output is correct
6 Correct 52 ms 13992 KB Output is correct
7 Correct 46 ms 13208 KB Output is correct
8 Correct 44 ms 13048 KB Output is correct
9 Correct 55 ms 14052 KB Output is correct
10 Correct 53 ms 14020 KB Output is correct
11 Correct 51 ms 13836 KB Output is correct
12 Correct 53 ms 14040 KB Output is correct
13 Correct 55 ms 13944 KB Output is correct
14 Correct 51 ms 13952 KB Output is correct
15 Correct 56 ms 14048 KB Output is correct
16 Correct 53 ms 13976 KB Output is correct
17 Correct 48 ms 13756 KB Output is correct
18 Correct 48 ms 13740 KB Output is correct
19 Correct 50 ms 13728 KB Output is correct
20 Correct 51 ms 13704 KB Output is correct
21 Correct 47 ms 13692 KB Output is correct
22 Correct 53 ms 13588 KB Output is correct
23 Correct 40 ms 11296 KB Output is correct
24 Correct 42 ms 11272 KB Output is correct
25 Correct 41 ms 11828 KB Output is correct
26 Correct 40 ms 11764 KB Output is correct
27 Correct 47 ms 12592 KB Output is correct
28 Correct 47 ms 12564 KB Output is correct
29 Correct 47 ms 12412 KB Output is correct
30 Correct 47 ms 12440 KB Output is correct
31 Correct 40 ms 11228 KB Output is correct
32 Correct 40 ms 11292 KB Output is correct
33 Correct 44 ms 11576 KB Output is correct
34 Correct 41 ms 11596 KB Output is correct
35 Incorrect 38 ms 12032 KB Wrong Answer [5]
36 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 11272 KB Output is correct
2 Correct 44 ms 12268 KB Output is correct
3 Correct 1 ms 1000 KB Output is correct
4 Correct 35 ms 11200 KB Output is correct
5 Correct 60 ms 14008 KB Output is correct
6 Correct 55 ms 13952 KB Output is correct
7 Correct 44 ms 13064 KB Output is correct
8 Correct 44 ms 13056 KB Output is correct
9 Correct 54 ms 13928 KB Output is correct
10 Correct 53 ms 13980 KB Output is correct
11 Correct 52 ms 13936 KB Output is correct
12 Correct 57 ms 13980 KB Output is correct
13 Correct 50 ms 13996 KB Output is correct
14 Correct 51 ms 13888 KB Output is correct
15 Correct 53 ms 13956 KB Output is correct
16 Correct 51 ms 13888 KB Output is correct
17 Correct 48 ms 13636 KB Output is correct
18 Correct 50 ms 13732 KB Output is correct
19 Correct 49 ms 13740 KB Output is correct
20 Correct 49 ms 13624 KB Output is correct
21 Correct 50 ms 13672 KB Output is correct
22 Correct 47 ms 13736 KB Output is correct
23 Incorrect 37 ms 11236 KB Wrong Answer [5]
24 Halted 0 ms 0 KB -