Submission #536887

#TimeUsernameProblemLanguageResultExecution timeMemory
536887siewjhToys (CEOI18_toy)C++17
100 / 100
2518 ms91008 KiB
#include <bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int n; cin >> n;
    int sqrtn = sqrt(n);
    vector<int> fact;
    for (int i = 1; i <= sqrtn; i++)
        if (n % i == 0){
            fact.push_back(i);
            if (n / i != i) fact.push_back(n / i);
        }
    sort(fact.begin(), fact.end());
    int fnum = fact.size();
    vector<vector<int>> ffact(fact.size());
    for (int i = 0; i < fnum; i++)
        for (int j = 0; j < i; j++)
            if (fact[i] % fact[j] == 0)
                ffact[i].push_back(j);
    vector<set<int>> cumsum(fact.size());
    cumsum[0].insert(0);
    for (int i = 0; i < fnum; i++)
        for (int j = 0; j < ffact[i].size(); j++)
            for (int csv : cumsum[ffact[i][j]])
                    cumsum[i].insert(csv + fact[i] / fact[ffact[i][j]] - 1);
    set<int> ans;
    for (int csv : cumsum.back()) ans.insert(csv);
    cout << ans.size() << '\n';
    for (int x : ans) cout << x << ' ';
    return 0;
}

Compilation message (stderr)

toy.cpp: In function 'int main()':
toy.cpp:24:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |         for (int j = 0; j < ffact[i].size(); j++)
      |                         ~~^~~~~~~~~~~~~~~~~
#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...