Submission #598232

#TimeUsernameProblemLanguageResultExecution timeMemory
598232MounirToys (CEOI18_toy)C++14
100 / 100
2050 ms86692 KiB
#include <bits/stdc++.h>
#define all(v) v.begin(), v.end()
#define sz(x) (int)x.size()
#define pb push_back
#define pii pair<int, int>
#define chmin(x, v) x = min(x, v)
#define chmax(x, v) x = max(x, v)
#define print(x) cout << #x << " est " << x << endl;
#define x first
#define y second
//#define int long long
using namespace std;

map<int, set<int>> dp;

void calcul(int produit){
      if (dp[produit].empty()){
            dp[produit].insert(produit - 1);
            for (int div = 2; div * div <= produit; ++div){
                  if (produit%div == 0){
                        int comp = produit/div;
                        calcul(div);
                        calcul(comp);

                        for (int sum : dp[div])
                              dp[produit].insert(sum + comp - 1);
                        for (int sum : dp[comp])
                              dp[produit].insert(sum + div - 1);
                  }
            }
      }
}

signed main(){ 
      ios::sync_with_stdio(false);
      cin.tie(nullptr);
      cout.tie(nullptr);
      int produit; cin >> produit;
      calcul(produit);
      cout << sz(dp[produit]) << endl;
      for (int somme : dp[produit])
            cout << somme << " " ;
      cout << endl;
      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...