Submission #963736

#TimeUsernameProblemLanguageResultExecution timeMemory
963736CookieCandies (JOI18_candies)C++14
0 / 100
2 ms6492 KiB
#include<bits/stdc++.h> #include<fstream> using namespace std; #define sz(a) (int)a.size() #define ALL(v) v.begin(), v.end() #define ALLR(v) v.rbegin(), v.rend() #define ll long long #define pb push_back #define forr(i, a, b) for(int i = a; i < b; i++) #define dorr(i, a, b) for(int i = a; i >= b; i--) #define ld long double #define vt vector #include<fstream> #define fi first #define se second #define pll pair<ll, ll> #define pii pair<int, int> #define mpp make_pair const ld PI = 3.14159265359, prec = 1e-9;; //using u128 = __uint128_t; //const int x[4] = {1, 0, -1, 0}; //const int y[4] = {0, -1, 0, 1}; const ll mod = 1e9 + 7, pr = 31; const int mxn = 5e5 + 5, mxq = 1e5 + 5, sq = 500, mxv = 5e4 + 1; //const int base = (1 <<18); const ll inf = 1e9 + 5, neg = -69420, inf2 = 1e14; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); // have fun! //JOIIIIIIIIIIIIIII struct ch{ ll v, l, r; }; struct cmp{ bool operator ()(const ch &a, const ch &b){ return(a.v < b.v); } }; int n; ll a[mxn + 1]; int nxt[mxn + 1], last[mxn + 1]; bool vis[mxn + 1]; void solve(){ cin >> n; priority_queue<ch, vt<ch>, cmp>pq; for(int i = 1; i <= n; i++){ cin >> a[i]; last[i] = i - 1; nxt[i] = i + 1; pq.push({a[i], i, i + 1}); } int take = 0; ll ans = 0; while(!pq.empty()){ auto [val, l, r] = pq.top(); pq.pop(); if(vis[l] || vis[r])continue; ans += val; take++; cout << ans << "\n"; if(take == (n + 1) / 2)break; vis[l] = vis[r] = 1; int u = last[l], v = nxt[r]; if(u >= 1 && v <= n + 1){ nxt[u] = v; last[v] = u; a[u] += a[r] - a[l]; pq.push({a[u], u, v}); } } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("DATA.inp", "r", stdin); //freopen("DATA.out", "w", stdout); int tt; tt = 1; while(tt--){ solve(); } return(0); }

Compilation message (stderr)

candies.cpp: In function 'void solve()':
candies.cpp:51:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   51 |         auto [val, l, r] = pq.top(); pq.pop();
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...