Submission #385588

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

using namespace std;

vector < int > nez;

void solve(){
	int n, m;
	cin >> n >> m;
	int sol=n-1;
	int x;
	bool p;
	if(n>m){
		sol=(n+m-1)/m*m-1;
		int br=(sol+m-1)/m+1;
		if(sol!=n || m<3){
			cout << sol <<  '\n';
			for(int i=1; i<=sol; i++){
				if(i%m){
					cout << -br << ' ';
				}
				else{
					cout << br*(m-1)+1 << ' ';
				}
			}
			cout << '\n';
		}
		else{
			for(int i=0; i<m-2; i++){
				nez.push_back(br);
			}
			nez.push_back(-br*(m-1)+1);
			x=m-1;
			p=1;
			while(p){
				if(x+m>n){
					p=0;
					for(int i=0; i<m-2; i++){
						nez.push_back(br);
					}
					x+=m-2;
				}
				else{
					for(int i=0; i<m-1; i++){
						nez.push_back(br);
					}
					nez.push_back(-br*(m-1)+1);
					x+=m;
				}
			}
			cout << nez.size() << '\n';
			for(int i=0; i<(int)nez.size(); i++){
				cout << nez[i] << ' ';
			}
			cout << '\n';
		}
	}
	else{
		sol=(n+m-1)/n*n-1;
		int br=(sol+n-1)/n+1;
		if(sol!=m || n<3){
			cout << sol <<  '\n';
			for(int i=1; i<=sol; i++){
				if(i%n){
					cout << br << ' ';
				}
				else{
					cout << -br*(n-1)-1 << ' ';
				}
			}
			cout << '\n';
		}
		else{
			for(int i=0; i<n-2; i++){
				nez.push_back(-br);
			}
			nez.push_back(br*(n-1)-1);
			x=n-1;
			p=1;
			while(p){
				if(x+n>m){
					p=0;
					for(int i=0; i<n-2; i++){
						nez.push_back(-br);
					}
					x+=n-2;
				}
				else{
					for(int i=0; i<n-1; i++){
						nez.push_back(-br);
					}
					nez.push_back(br*(n-1)-1);
					x+=n;
				}
			}
			cout << nez.size() << '\n';
			for(int i=0; i<(int)nez.size(); i++){
				cout << nez[i] << ' ';
			}
			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...