Submission #234794

# Submission time Handle Problem Language Result Execution time Memory
234794 2020-05-25T16:17:57 Z medk Stray Cat (JOI20_stray) C++14
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
#include "Anthony.h"

#define pb push_back
#define eb emplace_back

using namespace std;

int n,m;
vector<vector<pair<int,int>>> g;
vector<int> seq={0,1,0,0,1,1};

vector<int> Mark1();
vector<int> Mark2();

vector<int> Mark(int N, int M, int A, int B, vector<int> U, vector<int> V){
	n=N, m=M;
	g.resize(n);
	for(int i=0;i<m;i++){
		g[U[i]].eb(V[i],i);
		g[V[i]].eb(U[i],i);
	}
	if(A>=3) return Mark1();
	return Mark2();
}

vector<int> Mark1(){
	vector<int> dpth(n);
	vector<bool> vis(n);
	vector<int> ans(m);
	queue<int> bfs;
	bfs.push(0);
	dpth[0]=0;
	vis[0]=1;
	while(!bfs.empty()){
		int u=bfs.front();
		bfs.pop();
		for(auto p:g[u]){
			int v=p.first, e=p.second;
			if(!vis[v]){
				vis[v]=1;
				bfs.push(v);
				dpth[v]=dpth[u]+1;
				ans[e]=dpth[v]%3;
			}
			else{
				if(dpth[v]==dpth[u]) ans[e]=(dpth[v]+1)%3;
				else ans[e]=max(dpth[v],dpth[u])%3;
			}
		}
	}
	return ans;
}

vector<int> Mark2(){
	vector<bool> vis(n);
	vector<int> ans(m);
	queue<pair<int,int>> bfs;
	bfs.push({0,0});
	vis[0]=1;
	while(!bfs.empty()){
		int u=bfs.front().first, col=bfs.front().second;
		bfs.pop();
		for(auto p:g[u]){
			int v=p.first, e=p.second;
			if(vis[v]) continue;
			vis[v]=1;
			if(g[u].size()<=2){
				ans[e]=(col+1)%6;
				bfs.push({v,ans[e]});
			}
			else{
					ans[e]=seq[col]^1;
					bfs.push({v,ans[e]});
			}
		}
	}
	for(int i=0;i<m;i++) ans[i]=seq[ans[i]];
	return ans;
}
#include <bits/stdc++.h>
#include "Catherine.h"

#define pb push_back
#define x first
#define y second

using namespace std;

int a;
int prv=-1;
bool trying=true;
int cnt=0,revrem=0;
vector<int> sq;

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

int Move1(vector<int> arr);
int Move2(vector<int> arr);

int Move(vector<int> arr){
	if(a>=3) return Move1(arr);
	return Move2(arr);
}

int Move1(vector<int> arr){
	set<int> st={0,1,2};
	for(int i=0;i<3;i++) if(arr[i]==0) st.erase(i);
	if(st.size()==1) return *st.begin();
	if(*next(st.begin())-*st.begin()==1) return *st.begin();
	return 2;
}

int Move2(vector<int> arr){
	if(trying){
		cnt++;
		if(cnt==1){
			int sum=arr[0]+arr[1];
			if(sum>2){
				trying=false;
				if(arr[0]==1){
					prv=0;
					return 0;
				}
				prv=1;
				return 1;
			}
			else{
				for(int i=0;i<arr[0];i++) sq.pb(0);
				for(int i=0;i<arr[1];i++) sq.pb(1);
				prv=sq.back();
				if(sum==1) trying=false;
				return prv;
			}
		}
		else{
			int sum=arr[0]+arr[1];
			if(sum>=2){
				trying=false;
				if(arr[prv]==0){
					prv=sq.back();
					sq.pop_back();
					revrem=cnt-2;
					return -1;
				}
				else{
					prv^=1;
					return prv;
				}
			}
			else{
				sq.pb(arr[0]==0);
				if(cnt<4){
					prv=sq.back();
					return prv;
				}
				else{
					trying=false;
					if(sq=={0,1,0,0,1} || sq=={1,0,0,1,1} || sq=={0,0,1,1,0} || sq=={0,1,1,0,1} || sq=={1,1,0,1,0} || sq=={1,0,1,0,0}){
						sq.pop_back();
						prv=sq.back();
						revrem=2;
						return -1;
					}
					else{
						prv=sq.back();
						return prv;
					}
				}
			}
		}
	}
	if(revrem>0){
		revrem--;
		prv=sq.back();
		sq.pop_back();
		return -1;
	}
	if(arr[0]+arr[1]==1){
		prv=(arr[0]==0);
		return prv;
	}
	prv^=1;
	return prv;
}

Compilation message

Catherine.cpp: In function 'int Move2(std::vector<int>)':
Catherine.cpp:81:13: error: expected primary-expression before '{' token
      if(sq=={0,1,0,0,1} || sq=={1,0,0,1,1} || sq=={0,0,1,1,0} || sq=={0,1,1,0,1} || sq=={1,1,0,1,0} || sq=={1,0,1,0,0}){
             ^
Catherine.cpp:81:13: error: expected ')' before '{' token