Submission #1189451

#TimeUsernameProblemLanguageResultExecution timeMemory
1189451theyeiaNile (IOI24_nile)C++20
23 / 100
2095 ms12576 KiB
#include "nile.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using pl = pair<ll,ll>; using vl = vector<ll>; using vi = vector<int>; const int MOD = 1e9 + 7; #define F first #define S second #define sor(x) sort(begin(x), end(x)) #define FOR(i, a, b) for (int i = a; i < b; i++) ll n, q; ll preans = 0; vector<tuple<ll,ll,ll>> Artifacts; vector<tuple<ll,ll,ll>> Raw; vector<pl> Queries; vl Ans; vl calculate_costs(vi W, vi A, vi B, vi E) { ll n = W.size(), q = E.size(); Ans.resize(q, 0); FOR(i, 0, n) { ll w = W[i], a = A[i], b = B[i]; preans += b; Artifacts.push_back({w, a - b, i}); Raw.push_back({w, a, b}); } sor(Artifacts); FOR(i, 0, q) { ll e = E[i]; Queries.push_back({e, i}); } sor(Queries); // for (auto e : Artifacts) cout << get<0>(e) << " " << get<1>(e) << " " << get<2>(e) << endl; FOR(i, 0, q) { ll d = Queries[i].F; ll lost = 0, sz = 0, mn = 1e18; // cout << "d = " << d << endl; FOR(j, 0, n) { mn = min(mn, get<1>(Artifacts[j])); sz++; if (j == n - 1 || get<0>(Artifacts[j + 1]) - get<0>(Artifacts[j]) > d) { if (sz % 2) lost += mn; mn = 1e18; sz = 0; } } Ans[Queries[i].S] = preans + lost; } return Ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...