Submission #789553

#TimeUsernameProblemLanguageResultExecution timeMemory
789553juggernautNice sequence (IZhO18_sequence)C++14
100 / 100
874 ms43584 KiB
#include<bits/stdc++.h>
#define fr first
#define sc second
using namespace std;
typedef long long ll;
typedef long double ld;
#define USING_ORDERED_SET 0
#if USING_ORDERED_SET
#include<bits/extc++.h>
using namespace __gnu_pbds;
template<class T>using ordered_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
#endif
template<class T>void umax(T &a,T b){if(a<b)a=b;}
template<class T>void umin(T &a,T b){if(b<a)a=b;}
#ifdef juggernaut
    #define printl(args...) printf(args)
#else
    #define printl(args...) 0
#endif
int n, m;
int timer, len;
bool used[400005];
int pref[400005];
void dfs(int v){
	used[v] = true;
	{
		int to = v - m;
		if(to >= 0 && !used[to])
			dfs(to);
	}
	{
		int to = v + n;
		if(to <= len && !used[to])
			dfs(to);
	}
	pref[v] = timer++;
}
bool check(int len){
	::len = len;
	fill(pref, pref + len + 1, 0);
	fill(used, used + len + 1, false);
	timer = 0;
	for(int i = 0; i <= len; i++)
		if(!used[i])
			dfs(i);
	for(int i = n; i <= len; i++)
		if(pref[i] - pref[i - n] > 0)
			return false;
	for(int i = m; i <= len; i++)
		if(pref[i] - pref[i - m] < 0)
			return false;
	return true;
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int tests;
	cin >> tests;
	while(tests--){
		cin >> n >> m;
		int l = 0, r = n + m;
		while(l < r){
			int mid = (l + r + 1) >> 1;
			if(check(mid))l = mid;
			else r = mid - 1;
		}
		check(l);
		cout << l << '\n';
		if(l){
			for(int i = 1; i <= l; i++)
				cout << pref[i] - pref[i - 1] << ' ';
			cout << '\n';
		}
	}
}
#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...