Submission #1179863

#TimeUsernameProblemLanguageResultExecution timeMemory
1179863CrabCNHToys (CEOI18_toy)C++20
100 / 100
531 ms5752 KiB
#include <bits/stdc++.h>

#define task   "BriantheCrab"

#define int    long long
#define pii    pair <int, int>
#define fi     first
#define se     second
#define szf    sizeof
#define sz(s)  (int)((s).size())

using namespace std;

template <class T> void mini (T &t, T f) {if (t > f) t = f;}
template <class T> void maxi (T &t, T f) {if (t < f) t = f;}

const int maxN = 1e5 + 5;
const int inf = 1e18 + 7;
const int mod = 1e9 + 7;

int a[maxN];
vector <int> all;
map <int, int> mp;

void backtrack (int x, int cur, int sum) {
    //cout << x << ' ' << cur << '\n';
    if (x == 1) {
        mp[sum] = 1;
        return;
    }
    while (cur >= 0 && (x % all[cur] != 0)) {
        cur --;
    }
    if (cur < 0) {
        return;
    }
    backtrack (x, cur - 1, sum);
    backtrack (x / all[cur], cur, sum + all[cur] - 1);
}

void solve () {
    int n;
    cin >> n;
    for (int i = 2; i * i < n; i ++) {
        if (n % i == 0) {
            all.push_back (i);
            all.push_back (n / i);
        }
    }
    all.push_back (n);
    if (sqrt (n) * (int) sqrt (n) == n) {
        all.push_back (sqrt (n));
    }
    sort (all.begin (), all.end ());
    backtrack (n, all.size () - 1, 0);
    cout << mp.size () << '\n';
    for (auto [u, _] : mp) {
        cout << u << ' ';
    }
}

signed main () {
    cin.tie (nullptr) -> sync_with_stdio (false);
    if (fopen (task".inp", "r")) {
        freopen (task".inp", "r", stdin);
        freopen (task".out", "w", stdout);
    }
    int t = 1;
    //cin >> t;
    while (t --) {
        solve ();
    } 
    return 0;
}
// thfdgb

Compilation message (stderr)

toy.cpp: In function 'int main()':
toy.cpp:65:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   65 |         freopen (task".inp", "r", stdin);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
toy.cpp:66:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   66 |         freopen (task".out", "w", stdout);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...