Submission #536824

#TimeUsernameProblemLanguageResultExecution timeMemory
536824jamezzzToys (CEOI18_toy)C++17
59 / 100
3869 ms262144 KiB
#include <bits/stdc++.h>
using namespace std;

#define sf scanf
#define pf printf
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define disc(x) sort(all(x));x.resize(unique(all(x))-x.begin());

int n,m,cur=1,vis[2025];
vector<int> p,f,nums[2025];
unordered_map<int,int> idx;

void gen_fac(int i){
	if(i==sz(p)){
		if(cur!=1)f.pb(cur);
		return;
	}
	gen_fac(i+1);
	cur*=p[i];
	gen_fac(i+1);
	cur/=p[i];
}

int main(){
	sf("%d",&n);
	if(n==1)pf("1\n0\n"),exit(0);
	int _n=n;
	for(int i=2;i*i<=n;++i){
		while(n%i==0)p.pb(i),n/=i;
	}
	if(n!=1)p.pb(n);
	n=_n;
	gen_fac(0);
	disc(f);
	m=sz(f);
	for(int i=0;i<m;++i){
		idx[f[i]]=i;
	}
	for(int i=0;i<m;++i){
		int x=f[i];
		for(int j=0;j<i;++j){
			if(x%f[j]==0){
				int t=idx[x/f[j]];
				for(int k:nums[t]){
					nums[i].pb(k+f[j]-1);
				}
				disc(nums[i]);
			}
		}
		nums[i].pb(x-1);
		disc(nums[i]);
	}
	pf("%d\n",sz(nums[m-1]));
	for(int i:nums[m-1])pf("%d ",i);
	pf("\n");
}

Compilation message (stderr)

toy.cpp: In function 'int main()':
toy.cpp:27:4: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |  sf("%d",&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...