Submission #1137223

#TimeUsernameProblemLanguageResultExecution timeMemory
1137223sohamsen15Pilot (NOI19_pilot)C++20
18 / 100
1095 ms11336 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); ll n, q; cin >> n >> q; vector<ll> h(n + 1); for (ll i = 1; i <= n; i++) cin >> h[i]; vector<ll> y(q + 1); for (ll i = 1; i <= q; i++) cin >> y[i]; vector<pii> a(n + 1); for (ll i = 1; i <= n; i++) a[i] = {h[i], i}; vector<pii> queries(q); for (ll i = 1; i <= q; i++) queries[i - 1] = {y[i], i}; vector<ll> answers(q + 1); auto f = [](ll n) { return n * (n + 1) / 2; }; ll lastVal = INT_MAX; auto g = [&](set<ll> s) { ll ans = 0; ll m = s.size(); vector<ll> v; v.push_back(0); for (auto x: s) v.push_back(x); v.push_back(n + 1); for (int i = 1; i <= m + 1; i++) { ans += f(v[i] - v[i - 1] - 1); if (v[i - 1] == lastVal) break; } lastVal = v[1]; return ans; }; sort(a.begin(), a.end()); sort(queries.rbegin(), queries.rend()); set<ll> s; ll lastIdx = INT_MAX; for (auto query: queries) { ll plane = query.first; ll target = plane + 1; ll l = 1, r = n; ll idx = -1; while (l <= r) { ll mid = (l + r) / 2; if (a[mid].first < target) l = mid + 1; else { if (mid == 1) { idx = mid; break; } if (a[mid - 1].first < target) { idx = mid; break; } else r = mid; } } if (idx == -1) { answers[query.second] = f(n); } else { ll ans = 0; for (ll j = idx; j <= n; j++) { s.insert(a[j].second); if (j >= lastIdx) break; } lastIdx = idx; answers[query.second] = g(s); } } for (ll i = 1; i <= q; i++) cout << answers[i] << "\n"; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...