Submission #1267296

#TimeUsernameProblemLanguageResultExecution timeMemory
1267296mohammadsamA Difficult(y) Choice (BOI21_books)C++20
100 / 100
1 ms1188 KiB
/* in the name of god */ //#pragma GCC optimize("Ofast,O3,unroll-loops") //#pragma GCC target("avx,avx2,fma") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,sse4a,avx,avx2,popcnt,tune=native") #include "books.h" #include <bits/stdc++.h> using namespace std; typedef pair<int,int> pii; typedef pair<long long ,long long> pll; typedef long long ll ; #define File freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #define all(V) V.begin(),V.end() #define setprec(x) fixed << setprecision(x) #define Mp(a,b) make_pair(a,b) #define len(V) (ll)(V.size()) #define sep ' ' #define endl '\n' #define pb push_back #define fi first #define sec second #define popcount(x) __builtin_popcount(x) #define lid u<<1 #define rid (lid)|1 mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); const ll N = 2e5 + 10,SQ=320,LOG=31; const ll inf = 2e9 , MD = 1e9 + 7; inline ll md(ll x){ x %= MD; return (x < 0 ? x + MD : x);} ll n , k,s,a; ll arr[N]; void solve(int n_,int k_,ll a_,int s_){ n = n_,k=k_,a=a_,s=s_; fill(arr,arr+n+1,-1); for(ll i = 1 ;i <= k;i++) arr[i] = skim(i); ll l = 0,r=n+1; while(r-l>1){ ll mid = (l+r)>>1; if(skim(mid) >= a) r = mid; else l = mid; } if(r <= n) { if(r <= k-1) impossible(); arr[r] = skim(r); ll sum = arr[r]; for(ll i =1 ;i <= k-1;i++) sum += arr[i]; if(sum <= 2*a){ vector<int> v; for(ll i=1 ;i <= k-1;i++) v.pb(i); v.pb(r); answer(v); return; } } for(ll i = r-1;i >= r - k;i--){ if(arr[i] == -1) arr[i] = skim(i); } ll sum = 0; for(ll i = 1;i <= k;i++) sum += arr[i]; ll pt = k; ll pt2 = r; while(pt >= 0){ if(sum >= a && sum <= 2*a){ vector<int> v; for(ll j =1 ;j <= pt;j++) v.pb(j); for(ll j = r - 1 ;j >= pt2;j--) v.pb(j); answer(v); return; } sum -= arr[pt]; pt--; pt2--; sum += arr[pt2]; } impossible(); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...