This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <map>
using namespace std;
#define sz(x) (int(x.size()))
using vi = vector<int>;
map< int, vector<int> > res;
vi sf;
void solve(int i)
{
    // cerr << "\n\n\n";
    // cerr << "solve:  " << i << '\n';
    // cerr << "cond = " << int(res.find(i) != res.end()) << '\n';
    if(res.find(i) != res.end()) return;
    // cerr << "entered\n";
    vi ans(1, i-1);
    // for(int j = 2; j < i && j*j <= i; j++)
    // cerr << "#\n";
    // for(int y: sf) cerr << "y = " << y << '\n';
    // cerr << "#2\n";
    for(int j: sf)
    {
        // cerr << "j = " << j << '\n';
        if(j >= i || j*j > i) break;
        if(i % j == 0)
        {
            // cerr << i << " -> " << j << '\n';
            int u = j;
            int v = i/j;
            solve(u);
            solve(v);
            for(int a: res[u])
                for(int b: res[v])
                    ans.push_back(a+b);
        }
    }
    sort(ans.begin(), ans.end());
    ans.erase(unique(ans.begin(), ans.end()), ans.end());
    res[i] = ans;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin >> n;
    for(int i = 2; i <= 31623; i++)
    {
        // cerr << i << " " << n%i << ' ' << int(n%i == 0) << '\n';
        if(n % i == 0)
            sf.push_back(i);
    }
    solve(n);
        vi ans = res[n];
    // cerr << "sf init = " ;
    // for(int q: sf) cerr << q << " ";
    // cerr << "\n";
    cout << sz(ans) << '\n';
    for(int r: ans) cout << r << ' ';
    cout << '\n';
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |