Submission #61230

#TimeUsernameProblemLanguageResultExecution timeMemory
61230istleminGap (APIO16_gap)C++14
60 / 100
86 ms3044 KiB
#include "gap.h" #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i = a; i<int(b);++i) #define all(v) v.begin(),v.end() #define sz(v) v.size() #define trav(a,c) for(auto a: c) typedef long long ll; typedef vector<ll> vi; typedef pair<ll,ll> pii; void ask(ll l,ll r, ll *mn,ll *mx){ ll ansMn,ansMx; MinMax(l,r-1,&ansMn,&ansMx); (*mn) = ansMn; (*mx) = ansMx; } long long findGap(int T, int N) { ll t = T; ll n = N; if(t==1){ vi a; ll l = -1; ll r = 2e18; while(true){ ll mn,mx; if(a.size()==n) break; ask(l,r,&mn,&mx); l = mn+1; r = mx; a.push_back(mn); if(mn==mx) break; a.push_back(mx); } sort(all(a)); ll mxGap = 0; rep(i,0,n-1) mxGap = max(mxGap,a[i+1]-a[i]); return mxGap; } else { ll dn,up; ask(-1,2e18,&dn,&up); up++; vi a; vi endPoints; endPoints.push_back(dn); ll numGroups = n/2+10; rep(i,0,numGroups){ if(i<(up-dn)%numGroups) endPoints.push_back(endPoints[endPoints.size()-1]+(up-dn)/numGroups+1); else endPoints.push_back(endPoints[endPoints.size()-1]+(up-dn)/numGroups); } rep(i,0,numGroups){ ll l = endPoints[i]; ll r = endPoints[i+1]; ll mn,mx; ask(l,r,&mn,&mx); if(mn==-1) continue; a.push_back(mn); a.push_back(mx); } sort(all(a)); ll mxGap = 0; rep(i,0,a.size()-1) mxGap = max(mxGap,a[i+1]-a[i]); //cout<<"yes"<<endl; return mxGap; } return 0; }

Compilation message (stderr)

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:32:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(a.size()==n) break;
                ~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...