Submission #1243368

#TimeUsernameProblemLanguageResultExecution timeMemory
1243368DangKhoizzzzToys (CEOI18_toy)C++17
79 / 100
2552 ms327680 KiB
/* 8 6 5 hi welcome hello ihateyou goaway dog cat rat 1 hi welcome 1 ihateyou goaway 2 hello ihateyou 2 hi goaway 2 hi hello 1 hi hello dog cat dog hi hi hello ihateyou goaway welcome ihateyou */ #include <bits/stdc++.h> #define pii pair <int , int> #define fi first #define se second #define pii pair <int , int> using namespace std; const int maxn = 1e5 + 7; const int mod = 1e9 + 7; int n; vector <short> g[maxn]; vector <int> dp[maxn]; vector <int> uoc; void build () { for(int i = 1; i <= n; i++) { if(n%i == 0) { uoc.push_back(i); if(n/i != i) uoc.push_back(n/i); } } sort(uoc.begin() , uoc.end()); for(int i = 0; i < uoc.size(); i++) { for(int j = i+1; j < uoc.size(); j++) { if(uoc[j] % uoc[i] == 0) g[i].push_back(j); } } } void solve() { cin >> n; build(); dp[0] = {0}; for(int i = 0; i < uoc.size(); i++) { sort(dp[i].begin() , dp[i].end()); dp[i].erase(unique(dp[i].begin() , dp[i].end()) , dp[i].end()); for(int j: g[i]) { for(int x: dp[i]) { dp[j].push_back(x + (uoc[j]/uoc[i] - 1)); } } } cout << dp[-1 + (int)uoc.size()].size() << '\n'; for(int x: dp[-1 + (int)uoc.size()]) cout << x << ' '; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); 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...