Submission #924741

#TimeUsernameProblemLanguageResultExecution timeMemory
924741parlimoosCity (BOI06_city)C++14
40 / 100
408 ms5452 KiB
//Be Name KHODA #pragma GCC optimize("Ofast") #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define pb push_back #define pp pop_back #define lb lower_bound #define ub upper_bound #define cl clear #define bg begin #define arr(x) array<int , x> #define endl '\n' ll n , t; int k , m; vector<ll> a; vector<int> lst; ll ps[20000]; void init(){ for(int i = 0 ; i < k ; i++){ ps[i] = a[i]; if(i > 0) ps[i] += ps[i - 1]; } ll cnt = 0; for(int i = 0 ; cnt < n ; i++) lst.pb((i + 1) * 4) , cnt += lst.back(); m = (int)lst.size(); } bool jg(ll e){ ll cnt = 0; for(int i = 0 ; i < m ; i++){ ll inx = int(ub(a.bg() , a.end() , e) - a.bg()); cnt += inx * (1ll * i + 1ll * 1) * (1ll * 4); e -= t; } return (cnt > n); } ll bs(){ ll l = -1 , r = t * a.back(); while(r - l - 1 > 1){ ll c = l + (r - l - 1) / 2 + 1; if(jg(c)) r = c; else l = c - 1; } if(r - l - 1 == 1){ if(jg(r - 1)) return r - 1; } return r; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> t >> k; for(int i = 0 ; i < k ; i++){ ll d; cin >> d; a.pb(d); } init(); ll d = bs(); ll o = 0 , sec = d; for(int i = 0 ; i < m ; i++){ ll inx = int(lb(a.bg() , a.end() , sec) - a.bg()); if(inx == 0) continue; // cout << (1ll * i + 1ll * 1) * (1ll * 4) * (ps[inx - 1] + (t * (1ll * i))) << "$\n"; n -= inx * (1ll * i + 1ll * 1) * (1ll * 4); o += (1ll * i + 1ll * 1) * (1ll * 4) * (ps[inx - 1] + (t * (1ll * i))); sec -= t; } if(n > 0){ sec = d; for(int i = 0 ; n > 0 and i < m ; i++ , sec -= t){ ll inx = int(lb(a.bg() , a.end() , sec) - a.bg()); if(inx >= k or a[inx] != sec) continue; o += min(n , (1ll * i + 1ll * 1) * (1ll * 4)) * (a[inx] + (t * (1ll * i))); n -= min(n , (1ll * i + 1ll * 1) * (1ll * 4)); } } cout << o; }
#Verdict Execution timeMemoryGrader output
Fetching results...