Submission #124407

#TimeUsernameProblemLanguageResultExecution timeMemory
124407RafikHachanaToys (CEOI18_toy)C++14
79 / 100
5024 ms73376 KiB
#include <bits/stdc++.h> using namespace std; set<int> s; //set<int> v; map<int,set<int> > m; map<int,int> val; set<int> dp(int n,int x) { if(n==1) { set<int> tmp; tmp.insert(x); return tmp; } set<int> tmp; if(val.find(n)!=val.end()) { for(auto it:m[n]) tmp.insert(it-val[n]+x); return tmp; } for(int i=1;i<=sqrt(n);i++) { if(n%i==0) { if(i!=1) { set<int> t1 = dp(n/i,x+i-1); for(auto it:t1) tmp.insert(it); } set<int> t2 = dp(i,x+n/i-1); for(auto it:t2) tmp.insert(it); } } val[n] = x; m[n] = tmp; return tmp; } int main() { int n; cin>>n; s = dp(n,0); cout<<s.size()<<endl; for(auto it:s) cout<<it<<" "; cout<<endl; }
#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...