Submission #385608

#TimeUsernameProblemLanguageResultExecution timeMemory
385608vanicNice sequence (IZhO18_sequence)C++14
15 / 100
11 ms1004 KiB
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cassert>
#include <vector>

using namespace std;


void solve(){
	vector < int > nez2;
	int n, m;
	cin >> n >> m;
	int sol2;
	int sol;
	int x;
	if(n>m){
		sol=(n+m-1)/m*m-1;
		int br=(sol+m-1)/m+1;
		nez2.push_back(-br*(m-1)+1);
		x=1;
		while(x+m<=n){
			for(int i=0; i<m-1; i++){
				nez2.push_back(br);
			}
			nez2.push_back(-br*(m-1)+1);
			x+=m;
		}
		sol2=nez2.size()+(n-nez2.size())*2;
		if(n%m==0 || sol>sol2){
			cout << sol << '\n';
			for(int i=1; i<=sol; i++){
				if(i%m){
					cout << -br << ' ';
				}
				else{
					cout << br*(m-1)+1 << ' ';
				}
			}
			cout << '\n';
		}
		else{
			cout << sol2 << '\n';
			for(int i=0; i<n-(int)nez2.size(); i++){
				cout << br << ' ';
			}
			for(int i=0; i<(int)nez2.size(); i++){
				cout << nez2[i] << ' ';
			}
			for(int i=0; i<n-(int)nez2.size(); i++){
				cout << br << ' ';
			}
			cout << '\n';
		}
	}
	else{
		sol=(n+m-1)/n*n-1;
		int br=(sol+n-1)/n+1;
		nez2.push_back(br*(n-1)-1);
		x=1;
		while(x+n<=m){
			for(int i=0; i<n-1; i++){
				nez2.push_back(-br);
			}
			nez2.push_back(br*(n-1)-1);
			x+=n;
		}
		sol2=nez2.size()+(m-nez2.size())*2;
		if(m%n==0 || sol>sol2){
			cout << sol <<  '\n';
			for(int i=1; i<=sol; i++){
				if(i%n){
					cout << br << ' ';
				}
				else{
					cout << -br*(n-1)-1 << ' ';
				}
			}
			cout << '\n';
		}
		else{
			cout <<  sol2 << '\n';
			for(int i=0; i<m-(int)nez2.size(); i++){
				cout << -br << ' ';
			}
			for(int i=0; i<(int)nez2.size(); i++){
				cout << nez2[i] << ' ';
			}
			for(int i=0; i<m-(int)nez2.size(); i++){
				cout << -br << ' ';
			}
			cout << '\n';
		}
	}
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin >> t;
	while(t--){
		solve();
	}
	return 0;
}
#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...