Submission #1317183

#TimeUsernameProblemLanguageResultExecution timeMemory
1317183jesusargHack (APIO25_hack)C++20
0 / 100
38 ms1968 KiB
#include <bits/stdc++.h>
#define ll long long 
#define pb push_back
#define f first
#define s second
using namespace std;

ll collisions(vector<ll> x);

ll calc(ll k, ll n) {
    ll q=k/n;
    ll r=k%n;
    return r*(q*(q+1)/2)+(n-r)*(q*(q-1)/2);
}

int hack(){
    int k= 100000; 
    vector<ll> x(k);
    for(int i=0; i<k; i++){
        x[i]=i+1;
    } 
    ll val1 = collisions(x);
    if(val1>0){
        ll lo=2, hi=k, ans=k;
        while(lo<=hi){
            ll mid = lo+((hi-lo)>>1);
            if(calc(k,mid) >= val1){ 
                ans=mid; 
                lo=mid+1; 
            }
            else hi=mid-1;
        }
        return (int)(ans);
    }
    ll b = 1000000000000LL; 
    for(int i=0; i<k; i++){
        x[i]=(i+1)*b;
    }
    ll val2=collisions(x);
    if(val2 > 0){
        vector<ll> d;
        for(ll i = 1; i*i <= b; i++){
            if(b%i == 0){
                d.pb(i);
                if(i*i != b){
                    d.pb(b/i);
                }
            }
        }
        sort(d.begin(), d.end());
        for(auto i : d){
            if(i>1 && calc(k,i) == val2){
                return (int)(i);
            }
        }
    }
    return k;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...