Source Code
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define all(v) v.begin(), v.end()
#define pb push_back    
#define sz(x) (int)(x).size()
void solve() {
    ll n;
    scanf("%lld", &n);
    set<ll> ans;
    for(ll i = 1; i <= 1e7; ++i) {
        ans.emplace(i);
        ll cur =  i * (i + 1) / 2;
        if(cur == n) {
            break;
        }
        ll nxt = (i + 2) * (i + 1) / 2;
        if(cur < n && nxt > n) {
            ll dif = n - cur;
            if(!ans.count(dif)) {
                ans.emplace(dif);
                break;
            } else {
                for(ll x : ans) {
                    ll dif = n - (cur - x);
                    if(!ans.count(dif)) {
                        ans.erase(x);
                        ans.emplace(dif);
                        goto hell;
                    }
                } 
            }
        }
    }
    hell:
    for(ll x : ans) {
        printf("%lld ", x);
    }
}
int main() {
    int t = 1;
    // scanf("%d",&t);
    while(t--)
        solve();
}
Copy
Want More! noomaK
GNU G++17
0 ms
360 KB
Wrong Answer