제출 #1133466

#제출 시각아이디문제언어결과실행 시간메모리
1133466ZeroCoolToys (CEOI18_toy)C++20
100 / 100
1375 ms86536 KiB
#include <bits/stdc++.h>
using namespace std;


#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds;
 
template<typename T>
using order_set =  tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;

#define ar array
#define ld long double
#define all(v) v.begin(), v.end()
#define int long long

#pragma GCC optimize("unroll-loops,O3,Ofast")

const int inf = 1e15 + 20;
const int maxN = 4e5 + 20;

vector<int> div(int x ){
	vector<int> ret;
	for(int i = 1;i * i <= x;i++){
		if(x % i == 0){
			ret.push_back(i);
			if(x / i != i)ret.push_back(x / i);
		}
	}
	sort(all(ret));
	return ret;
}

signed main(){ios_base::sync_with_stdio(false);cin.tie(0);
	int n;
	cin>>n;
	vector<int> A = div(n);
	n = A.size();
	map<int,int> mp;
	for(int i = 0;i < n;i++)mp[A[i]] = i;
	set<int> dp[n];
	for(int i = 0;i < n;i++){
		//cout<<A[i]<<' ';
		for(int j = 1;j < i;j++){
			if(A[i] % A[j] == 0){
				int k = mp[A[i] / A[j]];
				for(auto u: dp[k])dp[i].insert(u + A[j] - 1);
			}
		}
		dp[i].insert(A[i] - 1);
	}
	cout<<dp[n - 1].size()<<'\n';
	for(auto u: dp[n - 1])cout<<u<<" ";
	
}
//GLHF :D 	
#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...