답안 #522037

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
522037 2022-02-03T16:04:15 Z new_acc 길고양이 (JOI20_stray) C++14
15 / 100
49 ms 18108 KB
#include "Anthony.h"
#include<bits/stdc++.h>
#define fi first
#define se second
#define rep(a, b) for(size_t a = 0; a < (size_t)(b); a++)
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
const int N=2e4+10;
int deg[N],kol[N],kt[N];
bool vis[N];
vi graf[N],num[N];
string s="010011";
void bfs(){
	deque<int> deq;
	deq.push_back(0),vis[0]=1;
	while(deq.size()){
		int v=deq.front();
		deq.pop_front();
		for(auto u:graf[v]){
			if(!vis[u]){
				deg[u]=deg[v]+1,vis[u]=1;
				deq.push_back(u);
			}
		}
	}
}
void dfs(int v,int o,int pop=1){
	if(graf[v].size()>2 or graf[v].size()==1){
		rep(i,graf[v].size()){
			if(graf[v][i]==o) continue;
			kol[num[v][i]]=(pop+1)%2;
		}
	}else{
		if(kt[o]==0 and pop==1) kt[v]=0;
		else kt[v]=(kt[o]+1)%(int)(s.size());
		rep(i,graf[v].size()){
			if(graf[v][i]==o) continue;
			kol[num[v][i]]=int(s[kt[v]])-48;
		}
	}
	rep(i,graf[v].size()){
		int u=graf[v][i];
		if(u==o) continue;
		dfs(u,v,kol[num[v][i]]);
	}
}
vi Mark(int n,int m,int a,int b,vi u,vi v){
	rep(i,m) graf[u[i]].push_back(v[i]),graf[v[i]].push_back(u[i]),num[u[i]].push_back(i),num[v[i]].push_back(i);
	if(b==0){
		bfs();
		rep(i,n) kol[i]=(i==0?0:(kol[i-1]+1)%3);
		vi res;
		rep(i,m) res.push_back(kol[min(deg[u[i]],deg[v[i]])]);
		return res;
	}
	vi wyn;
	dfs(0,0);
	rep(i,m) wyn.push_back(kol[i]);
	return wyn;
}
/**int main(){
	vi res;
	vi u,v;
	u.push_back(0),u.push_back(0),u.push_back(1),u.push_back(1),u.push_back(1),u.push_back(4);
	v.push_back(2),v.push_back(4),v.push_back(2),v.push_back(3),v.push_back(5),v.push_back(6);
	res=Mark(7,6,2,6,u,v);
	rep(i,res.size()) cout<<res[i]<<"\n";
}*/
#include "Catherine.h"
#include<bits/stdc++.h>
#define fi first
#define se second
#define rep(a, b) for(size_t a = 0; a < (size_t)(b); a++)
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
const int N=2e4+10;
int il;
bool strona=0;
int ru=0,wyb,pocz=-1,pop=0;
bool znal;
string s;
string og="010011";
string d1="01001",d2="10011",d3="00110",d4="01101",d5="11010",d6="10100";
void Init(int a,int b){
	il=a;
}
int Move(vi t){
	if(il>=3){
		bool c[3];
		c[0]=c[1]=c[2]=0;
		rep(i,t.size()) c[i]=(t[i]>0?1:0);
		if(c[0]>0 and c[1]>0) return 0;
		if(c[1]>0 and c[2]>0) return 1;
		if(c[2]>0 and c[0]>0) return 2;
		if(c[0]) return 0;
		if(c[1]) return 1;
		return 2;
	}
	if(pocz==-1){
		pocz=1;
		if(t[0] and t[1]){
			if(t[0]+t[1]>2){
				strona=1;
				if(t[0]==1){pop=0;return 0;}
				pop=1;
				return 1;
			}
			wyb=0,ru++;
			s+='1',s+='0';
			pop=0;
			return 0;
		}else{
			strona=1;
			wyb=-1;
			if(t[0]) {pop=0;return 0;}
			pop=1;
			return 1;
		}
	}else{
		if(strona){
			if(t[0] and t[1]){
				(pop+=1)%=2;
				return pop;
			}else{
				if(t[0]){pop=0;return 0;}
				pop=1;
				return 1;
			}
		}else{
			if(ru==0){
				strona=1;
				pop=(t[0]>0?0:1);
				return pop;
			}
			if((t[0]>1 and !t[1]) or (t[1]>1 and !t[0])) znal=1;
			if(znal){
				ru--;
				return -1;
			}
			if(t[0] and t[1]){
				strona=1;
				(pop+=1)%=2;
				return pop;
			}
			if(ru==3){
				if(t[0]) s+='0';
				if(t[1]) s+='1';
				if(s==d1 or s==d2 or s==d3 or s==d4 or s==d5 or s==d6){
					strona=1;
					if(t[0]) pop=0;
					else pop=1;
					return pop;
				}else{
					ru--;
					znal=1;
					return -1;
				}
			}
		}
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 16972 KB Output is correct
2 Correct 1 ms 1524 KB Output is correct
3 Correct 33 ms 16348 KB Output is correct
4 Correct 46 ms 18108 KB Output is correct
5 Correct 46 ms 18036 KB Output is correct
6 Correct 38 ms 16760 KB Output is correct
7 Correct 36 ms 16664 KB Output is correct
8 Correct 44 ms 17332 KB Output is correct
9 Correct 43 ms 17472 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 16972 KB Output is correct
2 Correct 1 ms 1524 KB Output is correct
3 Correct 33 ms 16348 KB Output is correct
4 Correct 46 ms 18108 KB Output is correct
5 Correct 46 ms 18036 KB Output is correct
6 Correct 38 ms 16760 KB Output is correct
7 Correct 36 ms 16664 KB Output is correct
8 Correct 44 ms 17332 KB Output is correct
9 Correct 43 ms 17472 KB Output is correct
10 Correct 36 ms 14620 KB Output is correct
11 Correct 37 ms 14728 KB Output is correct
12 Correct 34 ms 14636 KB Output is correct
13 Correct 34 ms 14524 KB Output is correct
14 Correct 36 ms 14844 KB Output is correct
15 Correct 40 ms 15220 KB Output is correct
16 Correct 44 ms 17612 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 14496 KB Output is correct
2 Correct 2 ms 1496 KB Output is correct
3 Correct 38 ms 14124 KB Output is correct
4 Correct 44 ms 15820 KB Output is correct
5 Correct 49 ms 15812 KB Output is correct
6 Correct 36 ms 14560 KB Output is correct
7 Correct 40 ms 14472 KB Output is correct
8 Correct 44 ms 15140 KB Output is correct
9 Correct 41 ms 15136 KB Output is correct
10 Correct 40 ms 14916 KB Output is correct
11 Correct 39 ms 14920 KB Output is correct
12 Correct 38 ms 14900 KB Output is correct
13 Correct 38 ms 14816 KB Output is correct
14 Correct 42 ms 15144 KB Output is correct
15 Correct 42 ms 15200 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 14496 KB Output is correct
2 Correct 2 ms 1496 KB Output is correct
3 Correct 38 ms 14124 KB Output is correct
4 Correct 44 ms 15820 KB Output is correct
5 Correct 49 ms 15812 KB Output is correct
6 Correct 36 ms 14560 KB Output is correct
7 Correct 40 ms 14472 KB Output is correct
8 Correct 44 ms 15140 KB Output is correct
9 Correct 41 ms 15136 KB Output is correct
10 Correct 40 ms 14916 KB Output is correct
11 Correct 39 ms 14920 KB Output is correct
12 Correct 38 ms 14900 KB Output is correct
13 Correct 38 ms 14816 KB Output is correct
14 Correct 42 ms 15144 KB Output is correct
15 Correct 42 ms 15200 KB Output is correct
16 Correct 31 ms 12884 KB Output is correct
17 Correct 31 ms 12908 KB Output is correct
18 Correct 33 ms 12732 KB Output is correct
19 Correct 35 ms 12880 KB Output is correct
20 Correct 36 ms 13364 KB Output is correct
21 Correct 38 ms 13136 KB Output is correct
22 Correct 41 ms 15372 KB Output is correct
23 Correct 34 ms 12920 KB Output is correct
24 Correct 34 ms 12916 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1776 KB Output is correct
2 Correct 1 ms 1524 KB Output is correct
3 Correct 2 ms 1776 KB Output is correct
4 Correct 2 ms 1776 KB Output is correct
5 Correct 2 ms 1784 KB Output is correct
6 Incorrect 2 ms 1784 KB Wrong Answer [5]
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 33 ms 12748 KB Output is correct
2 Incorrect 32 ms 13512 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 33 ms 12672 KB Output is correct
2 Incorrect 34 ms 13520 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -