100282024-03-24 15:28:04111Széfnyitáscpp17Hibás válasz 47/1008ms6848 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
#ifdef DEBUG
start:
	N=2+rand()%99;
	// N=4;
#else
	cin>>N;
#endif
	int a[N+1],g[N+1][2];
	for(int i=1;i<=N;i++){
#ifdef DEBUG
		a[i]=rand()&1,g[i][0]=1+rand()%N,g[i][1]=1+rand()%N;
#else
		cin>>a[i]>>g[i][0]>>g[i][1];
#endif
	}
	int K;
#ifdef DEBUG
	K=N;
#else
	cin>>K;
#endif
	for(int _=0;_<1000;_++){
		vector<int>b(N);
		for(int i=0;i<N;i++){
			b[i]=rand()&1;
		}
		map<vector<int>,vector<int>>m;
		int ok=1;
		for(int z=1;z<=N;z++){
			vector<int>v(N),c(N*2);
			int x=z;
			for(int i=0;i<N;i++){
				v[i]=a[x];
				x=g[x][b[i]];
			}
			for(int i=0;i<N*2;i++){
				c[i]=a[x];
				x=g[x][a[x]];
			}
			if(m.count(v)&&m[v]!=c&&count(c.begin(),c.end(),0)&&count(c.begin(),c.end(),1)){
				// for(int i:v)cout<<i<<' ';cout<<endl;
				// for(int i:c)cout<<i<<' ';cout<<endl;
				// for(int i:m[v])cout<<i<<' ';cout<<endl;
				ok=0;
				break;
			}
			m[v]=c;
		}
		if(ok){
			vector<array<int,2>>t(1);
			vector<int>r(1);
			for(int z=1;z<=N;z++){
				vector<int>v(N);
				int x=z;
				int y=0;
				for(int i=0;i<N;i++){
					v[i]=a[x];
					if(t[y][a[x]]==0){
						t[y][a[x]]=t.size();
						t.emplace_back();
						r.push_back(-1);
					}
					r[y]=b[i];
					y=t[y][a[x]];
					x=g[x][b[i]];
				}
				if(r[y]!=-1){
					continue;
				}
				int xx=x;
				vector<int>c(N*2);
				for(int i=0;i<N*2;i++){
					c[i]=a[x];
					x=g[x][a[x]];
				}
				if(!count(c.begin(),c.end(),0)){
					r[y]=1;
					t[y][1]=y;
					continue;
				}
				if(!count(c.begin(),c.end(),1)){
					r[y]=0;
					t[y][0]=y;
					continue;
				}
				x=xx;
				vector<int>w(N+1);
				for(int i=0;i<N*2;i++){
					r[y]=a[x];
					if(w[g[x][a[x]]]){
						t[y][a[x]]=w[g[x][a[x]]];
						break;
					}
					w[x]=y;
					t[y][a[x]]=t.size();
					t.emplace_back();
					r.push_back(-1);
					y=t[y][a[x]];
					x=g[x][a[x]];
				}
			}
			cout<<t.size()<<' '<<1<<'\n';
			for(int i=0;i<t.size();i++){
				cout<<r[i]<<' '<<t[i][0]+1<<' '<<t[i][1]+1<<'\n';
			}
#ifdef DEBUG
			for(int z=1;z<=N;z++){
				int x=z,y=0;
				int k=0;
				for(int i=0;i<10000000;i++){
					k+=r[y]!=a[x];
					int xx=g[x][r[y]];
					int yy=t[y][a[x]];
					x=xx;
					y=yy;
				}
				if(k>K){
#ifdef DEBUG
					cout<<z<<' '<<k<<'\n';
#endif
					return 1;
				}
			}
			goto start;
#endif
			return 0;
		}
	}
#ifdef DEBUG
	cout<<N<<endl;
	for(int i=1;i<=N;i++){
		cout<<a[i]<<' '<<g[i][0]<<' '<<g[i][1]<<endl;
	}
#endif
	return 1;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1892 KiB
2Elfogadva3ms2088 KiB
subtask20/16
3Elfogadva3ms2432 KiB
4Elfogadva3ms2568 KiB
5Elfogadva3ms2792 KiB
6Elfogadva3ms3284 KiB
7Elfogadva3ms3304 KiB
8Elfogadva3ms3268 KiB
9Hibás válasz3ms3360 KiB
10Hibás válasz3ms3616 KiB
11Hibás válasz3ms3696 KiB
12Elfogadva3ms3808 KiB
13Elfogadva3ms3780 KiB
subtask324/24
14Elfogadva3ms3916 KiB
15Elfogadva3ms3888 KiB
16Elfogadva3ms4176 KiB
17Elfogadva3ms4032 KiB
18Elfogadva3ms4044 KiB
19Elfogadva3ms4072 KiB
20Elfogadva3ms4324 KiB
21Elfogadva3ms4252 KiB
subtask423/23
22Elfogadva3ms4180 KiB
23Elfogadva3ms4312 KiB
24Elfogadva3ms4340 KiB
25Elfogadva3ms4384 KiB
26Elfogadva3ms4360 KiB
27Elfogadva3ms4336 KiB
28Elfogadva3ms4604 KiB
29Elfogadva3ms4540 KiB
subtask50/37
30Elfogadva3ms2432 KiB
31Elfogadva3ms2568 KiB
32Elfogadva3ms2792 KiB
33Elfogadva3ms3284 KiB
34Elfogadva3ms3304 KiB
35Elfogadva3ms3268 KiB
36Hibás válasz3ms3360 KiB
37Hibás válasz3ms3616 KiB
38Hibás válasz3ms3696 KiB
39Elfogadva3ms3808 KiB
40Elfogadva3ms3780 KiB
41Elfogadva3ms3916 KiB
42Elfogadva3ms3888 KiB
43Elfogadva3ms4176 KiB
44Elfogadva3ms4032 KiB
45Elfogadva3ms4044 KiB
46Elfogadva3ms4072 KiB
47Elfogadva3ms4324 KiB
48Elfogadva3ms4252 KiB
49Elfogadva3ms4180 KiB
50Elfogadva3ms4312 KiB
51Elfogadva3ms4340 KiB
52Elfogadva3ms4384 KiB
53Elfogadva3ms4360 KiB
54Elfogadva3ms4336 KiB
55Elfogadva3ms4604 KiB
56Elfogadva3ms4540 KiB
57Elfogadva4ms4680 KiB
58Elfogadva7ms5696 KiB
59Elfogadva6ms5772 KiB
60Elfogadva7ms5828 KiB
61Elfogadva8ms6552 KiB
62Elfogadva8ms6660 KiB
63Elfogadva8ms5896 KiB
64Elfogadva8ms6604 KiB
65Elfogadva8ms6012 KiB
66Elfogadva8ms6120 KiB
67Elfogadva8ms6848 KiB
68Elfogadva8ms6084 KiB