Submission #1305752

#TimeUsernameProblemLanguageResultExecution timeMemory
1305752hackstarHack (APIO25_hack)C++20
56.60 / 100
148 ms2808 KiB
#include "hack.h"
#include <bits/stdc++.h>

using namespace std;

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(),x.rend()
#define ll long long

// collisions()

int cnst=7001;

int hack(){
        vector<ll>copy(cnst-1);
        iota(all(copy),1);
        ll l=1;
        int r=142836;
        int total=0;
        ll ans=0;
		    map<vector<ll>,int>cache;
        while(l<=r){
                int m=l+r>>1;
                vector<ll>cur=copy;
                for(int i=l;i<=m;i++){
                        cur.emplace_back(i*cnst);
                }
                // cout<<total<<'\n';
                total+=cur.size();
        				int curr;
        				if(cache.count(cur))
        						curr=cache[cur];
        				else
        				{
        						curr=collisions(cur);
        						cache[cur]=curr;
        				}
                if(curr){
                        // ans=m;
                        r=m-1;
                }
                else{
                        ans=m;
                        l=m+1;
                }
        }
        // cout<<ans<<'\n';
        if(!ans){
                int n=1;
                while(n++){
                        total+=2;
                        if(collisions({1,n+1})){
                                return n;
                        }
                }
                return -1;
        }
        // cout<<total<<'\n';
        // cout<<x<<'\n';
	for(int i=max(2ll,cnst*ans);i<cnst*(ans+1);i++){
		if(collisions({1,i+1})){
			return i;
		}
	}
        return -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...