QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#678249#9519. Build a Computerucup-team3161#AC ✓30ms20896kbC++171.9kb2024-10-26 14:26:252024-10-26 14:26:25

Judging History

This is the latest submission verdict.

  • [2024-10-26 14:26:25]
  • Judged
  • Verdict: AC
  • Time: 30ms
  • Memory: 20896kb
  • [2024-10-26 14:26:25]
  • Submitted

answer

#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
using namespace std;
inline int read()
{
    int x;cin>>x;return x;
}

#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;

#define maxn 2500005
#define inf 0x3f3f3f3f

int l,r;

int ch[maxn][2],rt=1,tot=1,dep[maxn];
bool hav[maxn];

int newn(){
	int u=++tot;
	ch[u][0]=ch[u][1]=0,dep[u]=0;
	hav[u]=0;
	return u;
}

void ins(int x){
	int u=1;
	int t=19;
	while(!(x>>t&1))--t;
	Rep(i,t,0){
		int c=x>>i&1;
		if(!ch[u][c])ch[u][c]=newn();
		u=ch[u][c];
	}
}
int mx=-1;
void dfs(int u){
	dep[u]=0;
	hav[u]=1;
	if(!ch[u][0] && !ch[u][1]) {
		dep[u]=0;
		hav[u]=1;
		return;
	}
	if(ch[u][0])dfs(ch[u][0]);
	if(ch[u][1])dfs(ch[u][1]);
	dep[u]=max(dep[ch[u][0]],dep[ch[u][1]])+1;
	hav[u]=hav[ch[u][0]]&&hav[ch[u][1]] && dep[ch[u][0]]==dep[ch[u][1]];
}

int id[200],cnt;
vector<pii> e[233];
void add(int u,int v,int w){
	e[u].pb(mkp(v,w));
}
int dfs2(int u,bool OP=0){
	int x=0;
	if(OP) x=1;
	else x=++cnt;
//	cout<<"dfs2 "<<u<<" "<<x<<"\n";
	For(i,0,1) if(ch[u][i]){
		if(hav[ch[u][i]]) add(x,-dep[ch[u][i]]-1,i),mx=max(mx,dep[ch[u][i]]);
		else add(x,dfs2(ch[u][i]),i);
	}
	return x;
}

void work()
{
	l=read(),r=read();
	cnt=1;

	for(int i=1; i<=(1<<19); i<<=1){
		int ql=i,qr=i*2-1;
		ql=max(ql,l);
		qr=min(qr,r);
		if(ql>qr) continue;
		tot=0; rt=newn();
		For(x,ql,qr) ins(x);
		dfs(rt);
		dfs2(rt,1);
	}

	id[0]=++cnt;
	For(i,1,mx){
		id[i]=++cnt;
		For(j,0,1)add(id[i],id[i-1],j);
	}
	
	cout<<cnt<<"\n";
	For(i,1,cnt){
		cout<<e[i].size()<<" ";
		for(auto [v,w]:e[i]){
			if(v<0){
				int d=-v-1;
				v=id[d];
			}
			cout<<v<<" "<<w<<" ";
		}
		cout<<"\n";
	}
}

signed main()
{
   // cout<<(4.5*sqrt(2))<<"\n";
    int T=1;
    while(T--)work();
	return 0;
}
/*

*/

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 7748kb

input:

5 7

output:

5
1 2 1 
2 3 0 5 1 
1 4 1 
0 
2 4 0 4 1 

result:

ok ok

Test #2:

score: 0
Accepted
time: 1ms
memory: 7772kb

input:

10 27

output:

9
2 2 1 4 1 
2 3 0 8 1 
1 7 1 
2 9 0 5 1 
1 8 0 
0 
2 6 0 6 1 
2 7 0 7 1 
2 8 0 8 1 

result:

ok ok

Test #3:

score: 0
Accepted
time: 1ms
memory: 7696kb

input:

5 13

output:

8
2 2 1 4 1 
2 3 0 7 1 
1 6 1 
2 8 0 5 1 
1 7 0 
0 
2 6 0 6 1 
2 7 0 7 1 

result:

ok ok

Test #4:

score: 0
Accepted
time: 30ms
memory: 20896kb

input:

1 1000000

output:

39
20 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 2 1 
2 39 0 3 1 
2 38 0 4 1 
2 37 0 5 1 
1 6 0 
2 35 0 7 1 
1 8 0 
1 9 0 
1 10 0 
1 11 0 
2 30 0 12 1 
1 13 0 
1 14 0 
2 27 0 15 1 
1 16 0 
1 17 0 
1 18 0 
1 19 0 
1 20 0 
1 21 0 
0 
2 21 0 21 1 
2 2...

result:

ok ok

Test #5:

score: 0
Accepted
time: 1ms
memory: 7764kb

input:

1 1

output:

2
1 2 1 
0 

result:

ok ok

Test #6:

score: 0
Accepted
time: 1ms
memory: 7656kb

input:

7 9

output:

7
2 2 1 4 1 
1 3 1 
1 6 1 
1 5 0 
1 7 0 
0 
2 6 0 6 1 

result:

ok ok

Test #7:

score: 0
Accepted
time: 1ms
memory: 7652kb

input:

3 7

output:

5
2 2 1 5 1 
1 3 1 
0 
2 3 0 3 1 
2 4 0 4 1 

result:

ok ok

Test #8:

score: 0
Accepted
time: 1ms
memory: 7772kb

input:

1 5

output:

4
3 3 1 4 1 2 1 
1 4 0 
0 
2 3 0 3 1 

result:

ok ok

Test #9:

score: 0
Accepted
time: 1ms
memory: 7700kb

input:

1 4

output:

5
3 4 1 5 1 2 1 
1 3 0 
1 4 0 
0 
2 4 0 4 1 

result:

ok ok

Test #10:

score: 0
Accepted
time: 0ms
memory: 7696kb

input:

8 9

output:

5
1 2 1 
1 3 0 
1 5 0 
0 
2 4 0 4 1 

result:

ok ok

Test #11:

score: 0
Accepted
time: 1ms
memory: 7692kb

input:

7 51

output:

11
4 2 1 10 1 11 1 4 1 
1 3 1 
1 7 1 
2 11 0 5 1 
1 6 0 
1 9 0 
0 
2 7 0 7 1 
2 8 0 8 1 
2 9 0 9 1 
2 10 0 10 1 

result:

ok ok

Test #12:

score: 0
Accepted
time: 1ms
memory: 7704kb

input:

51 79

output:

13
2 2 1 7 1 
1 3 1 
2 4 0 12 1 
2 5 0 11 1 
1 6 1 
1 9 1 
1 8 0 
1 13 0 
0 
2 9 0 9 1 
2 10 0 10 1 
2 11 0 11 1 
2 12 0 12 1 

result:

ok ok

Test #13:

score: 0
Accepted
time: 1ms
memory: 7708kb

input:

92 99

output:

11
1 2 1 
2 3 0 6 1 
1 4 1 
1 5 1 
1 11 1 
1 7 0 
1 8 0 
1 11 0 
0 
2 9 0 9 1 
2 10 0 10 1 

result:

ok ok

Test #14:

score: 0
Accepted
time: 1ms
memory: 7724kb

input:

27 36

output:

13
2 2 1 6 1 
1 3 1 
2 4 0 13 1 
1 5 1 
1 11 1 
1 7 0 
1 8 0 
2 13 0 9 1 
1 10 0 
1 11 0 
0 
2 11 0 11 1 
2 12 0 12 1 

result:

ok ok

Test #15:

score: 0
Accepted
time: 1ms
memory: 7772kb

input:

55 84

output:

17
2 2 1 7 1 
1 3 1 
2 4 0 16 1 
1 5 1 
1 6 1 
1 13 1 
1 8 0 
2 17 0 9 1 
1 10 0 
2 15 0 11 1 
1 12 0 
1 13 0 
0 
2 13 0 13 1 
2 14 0 14 1 
2 15 0 15 1 
2 16 0 16 1 

result:

ok ok

Test #16:

score: 0
Accepted
time: 12ms
memory: 18784kb

input:

297208 929600

output:

54
2 2 1 17 1 
2 3 0 53 1 
2 4 0 52 1 
1 5 1 
2 6 0 50 1 
2 7 0 49 1 
2 8 0 48 1 
1 9 1 
2 10 0 46 1 
2 11 0 45 1 
2 12 0 44 1 
1 13 1 
1 14 1 
1 15 1 
1 16 1 
1 39 1 
2 54 0 18 1 
2 53 0 19 1 
1 20 0 
1 21 0 
1 22 0 
2 49 0 23 1 
1 24 0 
2 47 0 25 1 
2 46 0 26 1 
2 45 0 27 1 
2 44 0 28 1 
1 29 0 
2...

result:

ok ok

Test #17:

score: 0
Accepted
time: 17ms
memory: 14356kb

input:

45728 589156

output:

49
5 2 1 47 1 48 1 49 1 12 1 
2 3 0 45 1 
1 4 1 
1 5 1 
2 6 0 42 1 
2 7 0 41 1 
1 8 1 
2 9 0 39 1 
1 10 1 
2 11 0 37 1 
1 36 1 
1 13 0 
1 14 0 
1 15 0 
2 46 0 16 1 
2 45 0 17 1 
2 44 0 18 1 
2 43 0 19 1 
2 42 0 20 1 
2 41 0 21 1 
1 22 0 
2 39 0 23 1 
1 24 0 
2 37 0 25 1 
2 36 0 26 1 
1 27 0 
1 28 0 ...

result:

ok ok

Test #18:

score: 0
Accepted
time: 1ms
memory: 7712kb

input:

129152 138000

output:

40
2 2 1 11 1 
1 3 1 
1 4 1 
1 5 1 
1 6 1 
1 7 1 
2 8 0 38 1 
2 9 0 37 1 
2 10 0 36 1 
1 35 1 
1 12 0 
1 13 0 
1 14 0 
1 15 0 
2 40 0 16 1 
2 39 0 17 1 
1 18 0 
2 37 0 19 1 
2 36 0 20 1 
1 21 0 
1 22 0 
1 23 0 
2 32 0 24 1 
1 25 0 
1 26 0 
1 27 0 
1 28 0 
0 
2 28 0 28 1 
2 29 0 29 1 
2 30 0 30 1 
2 ...

result:

ok ok

Test #19:

score: 0
Accepted
time: 13ms
memory: 16052kb

input:

245280 654141

output:

50
3 2 1 50 1 14 1 
1 3 1 
1 4 1 
2 5 0 46 1 
1 6 1 
1 7 1 
1 8 1 
1 9 1 
1 10 1 
2 11 0 40 1 
2 12 0 39 1 
2 13 0 38 1 
1 37 1 
1 15 0 
1 16 0 
2 48 0 17 1 
2 47 0 18 1 
2 46 0 19 1 
2 45 0 20 1 
2 44 0 21 1 
2 43 0 22 1 
1 23 0 
2 41 0 24 1 
2 40 0 25 1 
1 26 0 
1 27 0 
2 37 0 28 1 
2 36 0 29 1 
2...

result:

ok ok

Test #20:

score: 0
Accepted
time: 0ms
memory: 7808kb

input:

202985 296000

output:

52
2 2 1 19 1 
1 3 1 
2 4 0 52 1 
2 5 0 51 1 
2 6 0 50 1 
1 7 1 
1 8 1 
2 9 0 47 1 
2 10 0 46 1 
2 11 0 45 1 
1 12 1 
1 13 1 
1 14 1 
2 15 0 41 1 
1 16 1 
2 17 0 39 1 
2 18 0 38 1 
1 37 1 
1 20 0 
1 21 0 
2 52 0 22 1 
1 23 0 
1 24 0 
1 25 0 
1 26 0 
2 47 0 27 1 
1 28 0 
1 29 0 
1 30 0 
2 43 0 31 1 
...

result:

ok ok

Test #21:

score: 0
Accepted
time: 13ms
memory: 18796kb

input:

438671 951305

output:

56
2 2 1 20 1 
1 3 1 
2 4 0 54 1 
1 5 1 
2 6 0 52 1 
1 7 1 
1 8 1 
2 9 0 49 1 
2 10 0 48 1 
2 11 0 47 1 
1 12 1 
1 13 1 
2 14 0 44 1 
2 15 0 43 1 
2 16 0 42 1 
1 17 1 
1 18 1 
1 19 1 
1 38 1 
2 56 0 21 1 
2 55 0 22 1 
1 23 0 
2 53 0 24 1 
1 25 0 
1 26 0 
1 27 0 
1 28 0 
2 48 0 29 1 
1 30 0 
1 31 0 
...

result:

ok ok

Test #22:

score: 0
Accepted
time: 5ms
memory: 14336kb

input:

425249 739633

output:

55
2 2 1 20 1 
1 3 1 
2 4 0 54 1 
2 5 0 53 1 
1 6 1 
1 7 1 
1 8 1 
1 9 1 
1 10 1 
2 11 0 47 1 
1 12 1 
2 13 0 45 1 
2 14 0 44 1 
1 15 1 
2 16 0 42 1 
2 17 0 41 1 
2 18 0 40 1 
2 19 0 39 1 
1 38 1 
1 21 0 
2 55 0 22 1 
2 54 0 23 1 
1 24 0 
2 52 0 25 1 
1 26 0 
1 27 0 
2 49 0 28 1 
1 29 0 
1 30 0 
2 4...

result:

ok ok

Test #23:

score: 0
Accepted
time: 10ms
memory: 18696kb

input:

551207 961718

output:

56
1 2 1 
2 3 0 21 1 
2 4 0 56 1 
2 5 0 55 1 
2 6 0 54 1 
1 7 1 
1 8 1 
2 9 0 51 1 
1 10 1 
2 11 0 49 1 
2 12 0 48 1 
1 13 1 
2 14 0 46 1 
2 15 0 45 1 
1 16 1 
2 17 0 43 1 
2 18 0 42 1 
1 19 1 
1 20 1 
1 39 1 
2 56 0 22 1 
1 23 0 
2 54 0 24 1 
1 25 0 
2 52 0 26 1 
1 27 0 
2 50 0 28 1 
2 49 0 29 1 
1...

result:

ok ok

Test #24:

score: 0
Accepted
time: 11ms
memory: 14360kb

input:

114691 598186

output:

55
4 2 1 54 1 55 1 18 1 
1 3 1 
1 4 1 
2 5 0 50 1 
2 6 0 49 1 
2 7 0 48 1 
2 8 0 47 1 
2 9 0 46 1 
2 10 0 45 1 
2 11 0 44 1 
2 12 0 43 1 
2 13 0 42 1 
2 14 0 41 1 
2 15 0 40 1 
2 16 0 39 1 
1 17 1 
1 37 1 
1 19 0 
1 20 0 
2 53 0 21 1 
1 22 0 
1 23 0 
2 50 0 24 1 
1 25 0 
1 26 0 
1 27 0 
1 28 0 
1 29...

result:

ok ok

Test #25:

score: 0
Accepted
time: 1ms
memory: 7748kb

input:

234654 253129

output:

44
1 2 1 
1 3 1 
1 4 1 
2 5 0 18 1 
2 6 0 44 1 
1 7 1 
2 8 0 42 1 
1 9 1 
2 10 0 40 1 
2 11 0 39 1 
1 12 1 
2 13 0 37 1 
2 14 0 36 1 
1 15 1 
1 16 1 
1 17 1 
1 32 1 
1 19 0 
2 43 0 20 1 
2 42 0 21 1 
2 41 0 22 1 
1 23 0 
1 24 0 
2 38 0 25 1 
2 37 0 26 1 
1 27 0 
1 28 0 
2 34 0 29 1 
1 30 0 
1 32 0 
...

result:

ok ok

Test #26:

score: 0
Accepted
time: 0ms
memory: 9868kb

input:

554090 608599

output:

48
1 2 1 
1 3 0 
1 4 0 
2 5 0 20 1 
2 6 0 48 1 
1 7 1 
1 8 1 
1 9 1 
2 10 0 44 1 
1 11 1 
2 12 0 42 1 
2 13 0 41 1 
2 14 0 40 1 
1 15 1 
1 16 1 
2 17 0 37 1 
1 18 1 
2 19 0 35 1 
1 34 1 
1 21 0 
2 47 0 22 1 
1 23 0 
1 24 0 
2 44 0 25 1 
1 26 0 
1 27 0 
2 41 0 28 1 
1 29 0 
2 39 0 30 1 
1 31 0 
2 37 ...

result:

ok ok

Extra Test:

score: 0
Extra Test Passed