#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
cin.tie(0);
ios_base::sync_with_stdio(0);
ll n;
cin>>n;
ll prev = -1e18;
ll tot = 0;
stack<pair<ll,ll>> s; //index, time
ll val;
for (ll i = 0; i<n; i++){
cin>>val;
if (val<=prev){
continue;
} else {
prev=val;
}
ll ind = i;
tot+=(n-ind)*val;
while (s.size()>0){
auto f = s.top();
ll tind = f.first;
ll th = f.second;
//cout<<tind<<' '<<th<<'\n';
//can we do better by popping?
if ((n-ind)*val+(n-tind)*th>(n-tind)*val){
//cout<<"subtract\n";
tot-=(n-ind)*val+(n-tind)*th;
//cout<<tot<<'\n';
tot+=(n-tind)*val;
//cout<<tot<<'\n';
ind=tind;
s.pop();
} else {
break;
}
}
//cout<<i<<": "<<tot<<'\n';
s.push({ind,val});
}
cout<<tot<<'\n';
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Incorrect |
0 ms |
384 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
108 ms |
384 KB |
Output is correct |
2 |
Correct |
119 ms |
388 KB |
Output is correct |
3 |
Correct |
126 ms |
384 KB |
Output is correct |
4 |
Correct |
127 ms |
384 KB |
Output is correct |
5 |
Correct |
108 ms |
384 KB |
Output is correct |
6 |
Correct |
134 ms |
384 KB |
Output is correct |
7 |
Correct |
123 ms |
384 KB |
Output is correct |
8 |
Correct |
139 ms |
384 KB |
Output is correct |
9 |
Correct |
121 ms |
388 KB |
Output is correct |
10 |
Correct |
133 ms |
504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Incorrect |
0 ms |
384 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Incorrect |
0 ms |
384 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |