Submission #1161645

#TimeUsernameProblemLanguageResultExecution timeMemory
1161645LudisseyToys (CEOI18_toy)C++20
100 / 100
2867 ms79972 KiB
#include <bits/stdc++.h> #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() using namespace std; vector<pair<int,int>> fact; vector<int> poss; unordered_map<int,unordered_map<int,int>> vis; unordered_set<int> out; void dp(int rem, int sm){ if(rem==1) { out.insert(sm); return; } if(vis[rem].find(sm)!=vis[rem].end()) return; for (int i = 2; i <= sqrt(rem); i++) { if(rem%i) continue; if(rem/i==i) dp(rem/i,sm+i-1); else{ dp(rem/i,sm+i-1); dp(rem/(rem/i),sm+(rem/i)-1); } } dp(1,sm+rem-1); vis[rem][sm]=true; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; sort(all(fact)); dp(n,0); cout << sz(out) << "\n"; vector<int> ot; for (auto u : out) ot.push_back(u); sort(all(ot)); for (auto u : ot) cout << u << " "; cout << "\n"; 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...