이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
// #pragma GCC optimize("Ofast")
// #pragma GCC target("avx2")
// #pragma GCC optimization ("O3")
// #pragma GCC optimization ("unroll-loops")
// #pragma GCC target("popcnt")
#define endl '\n'
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define fo(i,n) for(auto i =0 ; i < n;i++)
#define fore(i,l,r) for(auto i = l; i < r;i++)
#define forex(i,r,l) for(auto i = r; i >= l; i--)
#define ffo(i,n) forex(i,n-1,0)
#define all(x) x.begin(),x.end()
#define lsb(x) x&(-x)
#define sz(x) (int)x.size()
#define gcd(a,b) __gcd(a,b)
#define vii vector<ii>
#define pq_min(a) priority_queue<a, vector<a>, greater<a>>
#define fls cout.flush()
using namespace std;
using ll = long long;
using ull = unsigned long long;
using vi = vector<int>;
using ii = pair<int,int>;
using mii = map<int,int>;
using lld = long double;
void valid(ll in){cout<<((in)?"YES\n":"NO\n");}
vector<ll> minimum_costs(vi H, vi L,vi R) {
int Q = L.size(), N = H.size( );
vector<ll> C(Q, 1e18);
fo(i,Q){
vector<ll> maxder(N,0),maxizq(N,0);
stack<int> stk;
for(int j = R[i]; j >= L[i]; j--){
if(j!=R[i])maxder[j]=maxder[j+1];
while(sz(stk) && H[j] > H[stk.top()]){
if(sz(stk)==1){
maxder[j] -= 1ll*(R[i] - stk.top()+1) * H[stk.top()];
stk.pop();
}else{
int ac = stk.top();
stk.pop();
maxder[j] -= 1ll*(stk.top() - ac) * H[ac];
}
}
if(sz(stk)){
maxder[j] += 1ll*(stk.top() - j) * H[j];
}else{
maxder[j] += 1ll*(R[i] - j+1)*H[j];
}
stk.push(j);
}
while(sz(stk))stk.pop();
for(int j = L[i]; j <= R[i];j++){
if(j!=L[i])maxizq[j]=maxizq[j-1];
while(sz(stk) && H[j] > H[stk.top()]){
if(sz(stk)==1){
maxizq[j] -= 1ll*(stk.top()-L[i]+1) * H[stk.top()];
stk.pop();
}else{
int ac = stk.top();
stk.pop();
maxizq[j] -= 1ll*(ac-stk.top()) * H[ac];
}
}
if(sz(stk)){
maxizq[j] += 1ll*(j-stk.top()) * H[j];
}else{
maxizq[j] += 1ll*(j-L[i]+1)*H[j];
}
stk.push(j);
}
fore(j, L[i], R[i]+1)
C[i] = min(C[i], maxder[j]+maxizq[j]);
}
return C;
}
# | 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... |