Submission #928664

# Submission time Handle Problem Language Result Execution time Memory
928664 2024-02-17T01:11:51 Z MilosMilutinovic Stray Cat (JOI20_stray) C++14
20 / 100
39 ms 15996 KB
#include "Anthony.h"
#include<bits/stdc++.h>
 
using namespace std;
 
namespace {
const int seq[]={1,0,1,1,0,0};
int n,tot;
int v[40005],nxt[40005],h[20005],d[20005],q[20005],idx[20005];
vector<int> ret;
 
void addedge(int x,int y){
	v[++tot]=y; nxt[tot]=h[x]; h[x]=tot;
	v[++tot]=x; nxt[tot]=h[y]; h[y]=tot;
}
 
void bfs(){
	for(int i=0;i<n;i++) d[i]=-1;
	int front=0,rear=0;
	q[rear++]=0; d[0]=0;
	while(front<rear){
		int x=q[front];
		for(int p=h[x];p;p=nxt[p]){
			if(d[v[p]]==-1){
				d[v[p]]=d[x]+1;
				q[rear++]=v[p];
			}
		}
		++front;
	}
}

void dfs(int x,int fa,int lst,int i){
	int ch=0;
	for(int p=h[x];p;p=nxt[p]) if(v[p]!=fa) ch++;
	if(ch==0) return;
	if(ch==1){
		for(int p=h[x];p;p=nxt[p]){
			if(v[p]==fa) continue;
			ret[idx[v[p]]]=(lst^seq[i]);
			dfs(v[p],x,lst,(i+1)%6);
		}
	}else{
		for(int p=h[x];p;p=nxt[p]){
			if(v[p]==fa) continue;
			ret[idx[v[p]]]=(x==0?0:ret[idx[x]])^1;
			dfs(v[p],x,x==0?0:ret[idx[x]],1);
		}
	}
}
}
 
vector<int> Mark(int n,int m,int a,int b,vector<int> u,vector<int> v){
	::n=n;
	for(int i=0;i<m;i++) addedge(u[i],v[i]);
	if(a>=3){
		bfs();
		vector<int> col(m);
		for(int i=0;i<m;i++) col[i]=min(d[u[i]],d[v[i]])%3;
		return col;
	}else{
		bfs();
		for(int i=0;i<m;i++){
			if(d[u[i]]>d[v[i]]) swap(u[i],v[i]);
			idx[v[i]]=i;
		}
		ret.resize(m);
		dfs(0,0,0,0);
		return ret;
	}
	return vector<int>(m,0);
}
#include "Catherine.h"
#include<bits/stdc++.h>

#define pb push_back
 
using namespace std;
 
namespace {
 
const int seq[]={1,0,1,1,0,0};
int a,b;
bool up;
vector<int> edg,pth;

bool Down(){
	for(int i=0;i<6;i++){
		int cnt=0;
		for(int j=0;j<(int)pth.size();j++){
			cnt+=(seq[(i+j)%6]==pth[j]);
		}
		if(cnt==0||cnt==(int)pth.size()) return true;
	}
	return false;
}
}  // namespace
 
void Init(int A,int B){
	a=A; b=B;
	up=false;
}
 
int Move(vector<int> y){
	if(a>=3){
		int cnt=0;
		for(int i=0;i<a;i++) cnt+=(y[i]>0?1:0);
		if(cnt==1){
			for(int i=0;i<a;i++) if(y[i]>0) return i;
		}
		for(int i=0;i<a;i++){
			if(y[i]>0&&y[(i+1)%3]>0) return i;
		}
	}
	if(up){
		if(y[0]==0&&y[1]==0){
			edg.pb(edg.back());
			return -1;
		}
		if(y[0]==0){
			assert(y[1]>0);
			edg.pb(1);
			return 1;
		}
		if(y[1]==0){
			assert(y[0]>0);
			edg.pb(0);
			return 0;
		}
		int t=edg.back();
		edg.pb(t^1);
		return t^1;
	}
	if(y[0]+y[1]+(!edg.empty()?1:0)==1){
		up=true;
		if(!edg.empty()) y[edg.back()]++;
		for(int i=0;i<2;i++){
			if(y[i]==1){
				int v;
				if(!edg.empty()&&edg.back()==i) v=-1;
				else v=i;
				edg.pb(i);
				return v;
			}
		}
	}
	if(y[0]+y[1]+(!edg.empty()?1:0)>2){
		up=true;
		if(!edg.empty()) y[edg.back()]++;
		for(int i=0;i<2;i++){
			if(y[i]==1){
				int v;
				if(!edg.empty()&&edg.back()==i) v=-1;
				else v=i;
				edg.pb(i);
				return v;
			}
		}
	}
	if((int)edg.size()<5){
		if(y[0]==0&&y[1]==0){
			up=true;
			edg.pb(edg.back());
			return -1;
		}
		if(y[0]==0){
			edg.pb(1);
			pth.pb(1);
			if(y[1]==2) pth.pb(1);
			return 1;
		}
		if(y[1]!=0) pth.pb(1);
		else if(y[0]==2) pth.pb(0);
		edg.pb(0);
		pth.pb(0);
		return 0;
	}
	if(y[0]==1) pth.pb(0);
	else assert(y[1]>0),pth.pb(1);
	if(Down()){
		up=true;
		edg.pb(edg.back());
		return -1;
	}else{
		up=true;
		if(y[0]==1){
			edg.pb(0);
			return 0;
		}else{
			assert(y[1]>0);
			edg.pb(1);
			return 1;
		}
	}
}
# Verdict Execution time Memory Grader output
1 Correct 28 ms 14968 KB Output is correct
2 Correct 0 ms 796 KB Output is correct
3 Correct 24 ms 14188 KB Output is correct
4 Correct 37 ms 15996 KB Output is correct
5 Correct 33 ms 15980 KB Output is correct
6 Correct 26 ms 14612 KB Output is correct
7 Correct 26 ms 14780 KB Output is correct
8 Correct 30 ms 15460 KB Output is correct
9 Correct 30 ms 15460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 28 ms 14968 KB Output is correct
2 Correct 0 ms 796 KB Output is correct
3 Correct 24 ms 14188 KB Output is correct
4 Correct 37 ms 15996 KB Output is correct
5 Correct 33 ms 15980 KB Output is correct
6 Correct 26 ms 14612 KB Output is correct
7 Correct 26 ms 14780 KB Output is correct
8 Correct 30 ms 15460 KB Output is correct
9 Correct 30 ms 15460 KB Output is correct
10 Correct 26 ms 12912 KB Output is correct
11 Correct 24 ms 12912 KB Output is correct
12 Correct 24 ms 12920 KB Output is correct
13 Correct 24 ms 12888 KB Output is correct
14 Correct 24 ms 13408 KB Output is correct
15 Correct 28 ms 13428 KB Output is correct
16 Correct 39 ms 15700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 26 ms 12400 KB Output is correct
2 Correct 0 ms 948 KB Output is correct
3 Correct 20 ms 11932 KB Output is correct
4 Correct 30 ms 13876 KB Output is correct
5 Correct 31 ms 13928 KB Output is correct
6 Correct 24 ms 12416 KB Output is correct
7 Correct 24 ms 12328 KB Output is correct
8 Correct 30 ms 13068 KB Output is correct
9 Correct 32 ms 13068 KB Output is correct
10 Correct 27 ms 12988 KB Output is correct
11 Correct 29 ms 12932 KB Output is correct
12 Correct 27 ms 12924 KB Output is correct
13 Correct 33 ms 12936 KB Output is correct
14 Correct 28 ms 13172 KB Output is correct
15 Correct 28 ms 13108 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 26 ms 12400 KB Output is correct
2 Correct 0 ms 948 KB Output is correct
3 Correct 20 ms 11932 KB Output is correct
4 Correct 30 ms 13876 KB Output is correct
5 Correct 31 ms 13928 KB Output is correct
6 Correct 24 ms 12416 KB Output is correct
7 Correct 24 ms 12328 KB Output is correct
8 Correct 30 ms 13068 KB Output is correct
9 Correct 32 ms 13068 KB Output is correct
10 Correct 27 ms 12988 KB Output is correct
11 Correct 29 ms 12932 KB Output is correct
12 Correct 27 ms 12924 KB Output is correct
13 Correct 33 ms 12936 KB Output is correct
14 Correct 28 ms 13172 KB Output is correct
15 Correct 28 ms 13108 KB Output is correct
16 Correct 22 ms 10876 KB Output is correct
17 Correct 22 ms 10856 KB Output is correct
18 Correct 23 ms 10940 KB Output is correct
19 Correct 27 ms 11140 KB Output is correct
20 Correct 26 ms 11632 KB Output is correct
21 Correct 28 ms 11568 KB Output is correct
22 Correct 35 ms 13424 KB Output is correct
23 Correct 23 ms 11128 KB Output is correct
24 Correct 23 ms 11132 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1056 KB Output is correct
2 Correct 0 ms 792 KB Output is correct
3 Correct 2 ms 1040 KB Output is correct
4 Correct 2 ms 1060 KB Output is correct
5 Correct 2 ms 1056 KB Output is correct
6 Correct 1 ms 1056 KB Output is correct
7 Correct 2 ms 1056 KB Output is correct
8 Correct 2 ms 1052 KB Output is correct
9 Correct 2 ms 1052 KB Output is correct
10 Correct 2 ms 1052 KB Output is correct
11 Correct 1 ms 1052 KB Output is correct
12 Correct 2 ms 1048 KB Output is correct
13 Correct 2 ms 1044 KB Output is correct
14 Correct 1 ms 1312 KB Output is correct
15 Correct 2 ms 1044 KB Output is correct
16 Correct 1 ms 1052 KB Output is correct
17 Correct 1 ms 1060 KB Output is correct
18 Correct 1 ms 1060 KB Output is correct
19 Correct 2 ms 1060 KB Output is correct
20 Correct 0 ms 1060 KB Output is correct
21 Correct 1 ms 1052 KB Output is correct
22 Correct 2 ms 1056 KB Output is correct
23 Correct 1 ms 1060 KB Output is correct
24 Correct 1 ms 1060 KB Output is correct
25 Correct 1 ms 1060 KB Output is correct
26 Correct 2 ms 1064 KB Output is correct
27 Correct 2 ms 1052 KB Output is correct
28 Correct 2 ms 1556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 22 ms 10664 KB Output is correct
2 Correct 31 ms 12068 KB Output is correct
3 Correct 0 ms 780 KB Output is correct
4 Correct 22 ms 10356 KB Output is correct
5 Correct 30 ms 13652 KB Output is correct
6 Correct 29 ms 13624 KB Output is correct
7 Correct 24 ms 12676 KB Output is correct
8 Incorrect 23 ms 12656 KB Wrong Answer [6]
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 24 ms 10864 KB Output is correct
2 Correct 24 ms 11884 KB Output is correct
3 Correct 1 ms 800 KB Output is correct
4 Correct 20 ms 10436 KB Output is correct
5 Correct 37 ms 13780 KB Output is correct
6 Correct 32 ms 13580 KB Output is correct
7 Incorrect 22 ms 12644 KB Wrong Answer [6]
8 Halted 0 ms 0 KB -