답안 #444869

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
444869 2021-07-15T16:40:13 Z kig9981 길고양이 (JOI20_stray) C++17
20 / 100
55 ms 16428 KB
#include "Anthony.h"
#include <bits/stdc++.h>
 
#ifdef NON_SUBMIT
#define TEST(n) (n)
#define tout cerr
#else
#define TEST(n) ((void)0)
#define tout cin
#endif
 
using namespace std;
 
vector<pair<int,int>> adj[20000];
int dist[20000];
 
std::vector<int> Mark(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) {
	vector<int> X(M,-1);
	queue<pair<int,int>> Q;
	memset(dist,-1,sizeof(dist));
	for(int i=0;i<M;i++) {
		adj[U[i]].emplace_back(V[i],i);
		adj[V[i]].emplace_back(U[i],i);
	}
	dist[0]=0;
	for(auto[n,t]: adj[0]) {
		dist[n]=1; X[t]=0;
		Q.emplace(n,t);
	}
	while(!Q.empty()) {
		auto[c,p]=Q.front();
		Q.pop();
		for(auto[n,t]: adj[c]) {
			if(dist[n]==-1) {
				dist[n]=dist[c]+1;
				if(A==2) {
					if(X[p]>1) {
						if(adj[c].size()==2) X[t]=(X[p]-1)%6+2;
						else X[t]=!(X[p]==3 || X[p]==6 || X[p]==7);
					}
					else {
						if(adj[c].size()==2) X[t]=X[p]+3;
						else X[t]=X[p]^1;
					}
				}
				else X[t]=min(dist[c],dist[n])%3;
				Q.emplace(n,t);
			}
			else if(X[t]==-1) X[t]=min(dist[c],dist[n])%3;
		}
	}
	if(A==2) for(auto &p: X) p=p==1 || p==3 || p==6 || p==7;
	return X;
}
#include "Catherine.h"
#include <bits/stdc++.h>
 
#ifdef NON_SUBMIT
#define TEST(n) (n)
#define tout cerr
#else
#define TEST(n) ((void)0)
#define tout cin
#endif
 
using namespace std;
 
int A, r;
bool d;
string s;
 
void Init(int A, int B) {
	::A=A;
	r=-1; d=false; s="";
}

int Move(std::vector<int> y) {
	if(r!=-1) y[r]++;
	if(A==2) {
		if(d) {
			if(y[0]+y[1]==2) {
				y[r]--;
				for(int i=0;i<2;i++) if(y[i]) return r=i;
			}
			for(int i=0;i<2;i++) if(y[i]==1) return r=i;
		}
		else {
			if(y[0]+y[1]>2) {
				d=true;
				if(r!=-1 && --y[r]==0) return -1;
				else {
					for(int i=0;i<2;i++) if(y[i]==1 && y[i]+(i==r)==1) return r=i;
				}
			}
			if(y[0]+y[1]==1) {
				d=true;
				for(int i=0;i<2;i++) if(y[i]) {
					if(i==r) return -1;
					return r=i;
				}
			}
			if(s.size()==4) {
				int cnt=0;
				d=true;
				y[r]--;
				for(int i=0;i<2;i++) if(y[i]) s.push_back('0'+i);
				for(auto c: s) cnt+=c-'0';
				s.push_back('0'+(cnt==2));
				for(int i=0;i<6;i++) {
					bool valid=true;
					for(int j=0;j<4;j++) valid&=s[(i+j)%6]=='1'-j/2;
					if(valid) {
						y[r]--;
						for(int i=0;i<2;i++) if(y[i]) return r=i;
					}
				}
				return -1;
			}
			if(r!=-1) y[r]--;
			for(int i=0;i<2;i++) if(y[i]) {
				if(r==-1) {
					y[i]--;
					for(int j=0;j<2;j++) if(y[j]) s.push_back('0'+j);
				}
				s.push_back('0'+i);
				return r=i;
			}
		}
	}
	else {
		for(int i=0;i<3;i++) if(y[i]==0 && y[(i+1)%3]==0) return r=(i+2)%3;
		for(int i=0;i<3;i++) if(y[i]==0) return r=(i+1)%3;
	}
}

Compilation message

Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:80:1: warning: control reaches end of non-void function [-Wreturn-type]
   80 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 15276 KB Output is correct
2 Correct 1 ms 1136 KB Output is correct
3 Correct 36 ms 14924 KB Output is correct
4 Correct 55 ms 16428 KB Output is correct
5 Correct 55 ms 16424 KB Output is correct
6 Correct 43 ms 15164 KB Output is correct
7 Correct 45 ms 15184 KB Output is correct
8 Correct 51 ms 15868 KB Output is correct
9 Correct 49 ms 15860 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 15276 KB Output is correct
2 Correct 1 ms 1136 KB Output is correct
3 Correct 36 ms 14924 KB Output is correct
4 Correct 55 ms 16428 KB Output is correct
5 Correct 55 ms 16424 KB Output is correct
6 Correct 43 ms 15164 KB Output is correct
7 Correct 45 ms 15184 KB Output is correct
8 Correct 51 ms 15868 KB Output is correct
9 Correct 49 ms 15860 KB Output is correct
10 Correct 38 ms 13372 KB Output is correct
11 Correct 40 ms 13168 KB Output is correct
12 Correct 40 ms 13284 KB Output is correct
13 Correct 39 ms 13324 KB Output is correct
14 Correct 44 ms 13580 KB Output is correct
15 Correct 47 ms 13972 KB Output is correct
16 Correct 51 ms 15960 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 12908 KB Output is correct
2 Correct 1 ms 1000 KB Output is correct
3 Correct 36 ms 12616 KB Output is correct
4 Correct 53 ms 14196 KB Output is correct
5 Correct 52 ms 14208 KB Output is correct
6 Correct 41 ms 13000 KB Output is correct
7 Correct 41 ms 13068 KB Output is correct
8 Correct 48 ms 13560 KB Output is correct
9 Correct 49 ms 13640 KB Output is correct
10 Correct 45 ms 13216 KB Output is correct
11 Correct 47 ms 13328 KB Output is correct
12 Correct 45 ms 13408 KB Output is correct
13 Correct 45 ms 13460 KB Output is correct
14 Correct 52 ms 13552 KB Output is correct
15 Correct 49 ms 13556 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 12908 KB Output is correct
2 Correct 1 ms 1000 KB Output is correct
3 Correct 36 ms 12616 KB Output is correct
4 Correct 53 ms 14196 KB Output is correct
5 Correct 52 ms 14208 KB Output is correct
6 Correct 41 ms 13000 KB Output is correct
7 Correct 41 ms 13068 KB Output is correct
8 Correct 48 ms 13560 KB Output is correct
9 Correct 49 ms 13640 KB Output is correct
10 Correct 45 ms 13216 KB Output is correct
11 Correct 47 ms 13328 KB Output is correct
12 Correct 45 ms 13408 KB Output is correct
13 Correct 45 ms 13460 KB Output is correct
14 Correct 52 ms 13552 KB Output is correct
15 Correct 49 ms 13556 KB Output is correct
16 Correct 37 ms 11636 KB Output is correct
17 Correct 36 ms 11528 KB Output is correct
18 Correct 39 ms 11456 KB Output is correct
19 Correct 38 ms 11416 KB Output is correct
20 Correct 44 ms 12096 KB Output is correct
21 Correct 41 ms 11840 KB Output is correct
22 Correct 47 ms 13752 KB Output is correct
23 Correct 39 ms 11544 KB Output is correct
24 Correct 40 ms 11512 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1332 KB Output is correct
2 Correct 1 ms 1128 KB Output is correct
3 Correct 2 ms 1388 KB Output is correct
4 Correct 2 ms 1388 KB Output is correct
5 Correct 2 ms 1388 KB Output is correct
6 Correct 3 ms 1396 KB Output is correct
7 Correct 2 ms 1388 KB Output is correct
8 Correct 2 ms 1392 KB Output is correct
9 Correct 2 ms 1388 KB Output is correct
10 Correct 2 ms 1388 KB Output is correct
11 Correct 2 ms 1388 KB Output is correct
12 Correct 2 ms 1388 KB Output is correct
13 Correct 2 ms 1388 KB Output is correct
14 Correct 2 ms 1396 KB Output is correct
15 Correct 2 ms 1396 KB Output is correct
16 Correct 2 ms 1388 KB Output is correct
17 Correct 2 ms 1396 KB Output is correct
18 Correct 2 ms 1396 KB Output is correct
19 Correct 2 ms 1384 KB Output is correct
20 Correct 2 ms 1388 KB Output is correct
21 Correct 2 ms 1388 KB Output is correct
22 Correct 2 ms 1404 KB Output is correct
23 Correct 2 ms 1388 KB Output is correct
24 Correct 2 ms 1396 KB Output is correct
25 Correct 2 ms 1388 KB Output is correct
26 Correct 2 ms 1384 KB Output is correct
27 Correct 2 ms 1388 KB Output is correct
28 Correct 2 ms 1388 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 38 ms 11080 KB Output is correct
2 Correct 46 ms 11544 KB Output is correct
3 Correct 1 ms 1128 KB Output is correct
4 Correct 34 ms 11108 KB Output is correct
5 Correct 53 ms 12516 KB Output is correct
6 Correct 51 ms 12316 KB Output is correct
7 Correct 40 ms 11368 KB Output is correct
8 Correct 42 ms 11424 KB Output is correct
9 Correct 48 ms 12160 KB Output is correct
10 Incorrect 37 ms 11272 KB Wrong Answer [5]
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 11268 KB Output is correct
2 Correct 42 ms 11300 KB Output is correct
3 Correct 1 ms 1132 KB Output is correct
4 Correct 32 ms 11236 KB Output is correct
5 Correct 49 ms 12228 KB Output is correct
6 Correct 48 ms 12284 KB Output is correct
7 Incorrect 34 ms 11324 KB Wrong Answer [5]
8 Halted 0 ms 0 KB -