Submission #1185162

#TimeUsernameProblemLanguageResultExecution timeMemory
1185162PieArmyNice sequence (IZhO18_sequence)C++20
20 / 100
140 ms21012 KiB
#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
using namespace std;

const ll dal=10000000000000000,unvis=10000000000000001;

int n,m;
ll pref[400023];

int dfs(int pos,int mx,ll base){
	pref[pos]=dal;
	ll res=base;
	if(pos-m>=0){
		if(pref[pos-m]==dal)return false;
		if(pref[pos-m]==unvis&&!dfs(pos-m,mx,base))return false;
		res=max(res,pref[pos-m]+1);
	}
	if(pos+n<=mx){
		if(pref[pos+n]==dal)return false;
		if(pref[pos+n]==unvis&&!dfs(pos+n,mx,base))return false;
		res=max(res,pref[pos+n]+1);
	}
	pref[pos]=res;
	return true;
}

bool f(int x){
	for(int i=0;i<=x;i++){
		pref[i]=unvis;
	}
	ll base=-unvis;
	for(int i=0;i<=x;i++){
		if(pref[i]!=unvis)continue;
		if(!dfs(i,x,base))return false;
		base+=1e7;
	}
	return true;
}

void solve(){
	cin>>n>>m;
	int l=max(n,m)-1,r=n+m-1;
	while(l<r){
		int mi=(l+r+1)/2;
		if(f(mi))l=mi;
		else r=mi-1;
	}
	f(l);
	for(int i=l;i>=1;i--){
		pref[i]-=pref[i-1];
	}
	cout<<l<<endl;
	for(int i=1;i<=l;i++){
		cout<<pref[i]<<" ";
	}
}

int main(){
	ios_base::sync_with_stdio(false);cin.tie(NULL);
	int t;cin>>t;
	while(t--){
		solve();
		cout<<endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...