This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <algorithm>
#include <string.h>
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <cmath>
#include <set>
#include <map>
// #include "meetings.h"
using namespace std;
#define sq 320
#define maxN 200010
#define ff first
#define ss second
#define ll long long
#define pb push_back
#define mod 1000000007
#define pii pair <int, int>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
ll bigmod(ll a,ll e) {if(e==0)return 1;ll x=bigmod(a*a%mod,e>>1);return e&1?x*a%mod:x;}
ll n, q;
pii p[maxN];
ll A[maxN];
ll B[maxN];
vector<long long> minimum_costs(vector<int> H, vector<int> L, vector<int> R) {
q = L.size();
n = H.size();
vector <ll> E;
for(ll i = 0; i < n; i++) {
p[i].ss = n;
while(!E.empty() && H[E.back()] < H[i]) p[E.back()].ss = i, E.pop_back();
p[i].ff = -1;
if(!E.empty()) p[i].ff = E.back();
E.pb(i);
}
// for(int i = 0; i < n; i++) cout << p[i].ff << " " << p[i].ss << "\n";
vector <ll> ans;
for(ll i = 0; i < q; i++) {
ll mn = 2e9;
memset(A, 0, sizeof(A));
memset(B, 0, sizeof(B));
for(ll h = L[i]; h <= R[i]; h++) {
if(h == L[i] || H[h] >= H[h-1]) A[h] = A[p[h].ff] + (h - max(p[h].ff + 1, L[i]) + 1) * H[h];
else A[h] = A[h-1] + H[h];
}
for(ll h = R[i]; h >= L[i]; h--) {
if(h == R[i] || H[h] >= H[h+1]) B[h] = B[p[h].ss] + (min(p[h].ss - 1, R[i]) - h + 1) * H[h];
else B[h] = B[h+1] + H[h];
mn = min(mn, A[h] + B[h] - H[h]);
// cout << h << " - " << A[h] << " " << B[h] << " " << H[h] << "\n";
}
ans.pb(mn);
}
return ans;
}
// int main()
// {
// cin >> n >> q;
// ll x, y;
// vector <int> a, b, c;
// for(ll i = 1; i <= n; i++) cin >> x, a.pb(x);
// for(ll i = 1; i <= q; i++) cin >> x >> y, b.pb(x), c.pb(y);
// vector <ll> res = minimum_costs(a, b, c);
// for(auto i: res) cout << i << " ";
// }
/*
4 2
2 4 3 5
0 2
1 3
*/
Compilation message (stderr)
meetings.cpp:23: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
23 | #pragma GCC optimization ("O3")
|
meetings.cpp:24: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
24 | #pragma GCC optimization ("unroll-loops")
|
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |