Submission #1026986

#TimeUsernameProblemLanguageResultExecution timeMemory
1026986ricardsjansonsPilot (NOI19_pilot)C++17
89 / 100
1028 ms43688 KiB
#include <algorithm> #include <iostream> #include <vector> using namespace std; int main() { int n, q; cin >> n >> q; vector<pair<int, int>> h(n + 1); for (int i = 1; i <= n; i++) { cin >> h[i].first; h[i].second = i; } sort(h.begin(), h.end()); h.push_back({1e6 + 1, n + 1}); vector<pair<int, int>> y(q); for (int i = 0; i < q; i++) { cin >> y[i].first; y[i].second = i; } sort(y.begin(), y.end()); vector<long long> l(n + 2); vector<long long> r(n + 2); vector<long long> res(q, -1); long long flights = 0; int j = 0; for (int i = 1; i <= n; i++) { while (j < q && h[i].first > y[j].first) { res[y[j].second] = flights; j++; } int index = h[i].second; l[index] = l[index - 1] + 1; r[index] = r[index + 1] + 1; if (r[index] > 1) { l[index + r[index] - 1] += l[index]; } if (l[index] > 1) { r[index - l[index] + 1] += r[index]; } flights += l[index] * r[index]; } for (long long v : res) { cout << (v >= 0 ? v : flights) << endl; } }
#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...