Submission #224230

#TimeUsernameProblemLanguageResultExecution timeMemory
224230bortozPilot (NOI19_pilot)C++17
100 / 100
441 ms27512 KiB
#pragma GCC optimize("O3") #include "bits/stdc++.h" using namespace std; typedef long long ll; #define fi first #define se second int main() { ios::sync_with_stdio(false); cin.tie(0); int N, Q; cin >> N >> Q; vector<int> H(N); for (int& i : H) { cin >> i; } vector<int> lx(N, -1), rx(N, N); vector<int> stk; for (int i = 0; i < N; i++) { while (!stk.empty() && H[i] > H[stk.back()]) { stk.pop_back(); } if (!stk.empty()) lx[i] = stk.back(); stk.push_back(i); } stk.clear(); for (int i = N - 1; i >= 0; i--) { while (!stk.empty() && H[i] >= H[stk.back()]) { stk.pop_back(); } if (!stk.empty()) rx[i] = stk.back(); stk.push_back(i); } vector<ll> res(1e6 + 1); for (int i = 0; i < N; i++) { res[H[i]] += 1ll * (i - lx[i]) * (rx[i] - i); } for (int i = 1; i <= 1e6; i++) { res[i] += res[i - 1]; } for (int i = 0; i < Q; i++) { int Y; cin >> Y; cout << res[Y] << '\n'; } return 0; }
#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...