Submission #996153
Source Code Expand
#include <algorithm> #include <complex> #include <iostream> #include <map> #include <queue> #include <set> #include <string> #include <vector> #define rep(i, n) for (int i = 0; i < (n); i++) #define rrep(i, n) for (int i = (n)-1; i >= 0; i--) using namespace std; typedef long long int lli; typedef pair<lli, lli> P; map<lli, lli> d; set<lli> s; int main() { lli n; lli a[200005] = {}; cin >> n; s.insert(-1); s.insert(n); lli ans = 0; rep(i, n) { cin >> a[i]; d[a[i]] = i; } for (int i = 1; i <= n; i++) { s.insert(d[i]); auto it = s.find(d[i]); --it; lli left = *it; ++it; ++it; lli right = *it; ans += i * (d[i] - left) * (right - d[i]); //cout << ans << endl; } cout << ans << endl; }
Submission Info
Submission Time | |
---|---|
Task | B - Minimum Sum |
User | uenoku |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 866 Byte |
Status | AC |
Exec Time | 444 ms |
Memory | 23680 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example0, example1, example2 |
All | corner0, corner1, corner2, corner3, example0, example1, example2, maxrand0, maxrand1, maxrand2, rand0, rand1, rand2 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
corner0 | AC | 444 ms | 23680 KB |
corner1 | AC | 420 ms | 23680 KB |
corner2 | AC | 4 ms | 1792 KB |
corner3 | AC | 344 ms | 23680 KB |
example0 | AC | 4 ms | 1792 KB |
example1 | AC | 4 ms | 1792 KB |
example2 | AC | 4 ms | 1792 KB |
maxrand0 | AC | 344 ms | 23680 KB |
maxrand1 | AC | 323 ms | 23680 KB |
maxrand2 | AC | 334 ms | 23680 KB |
rand0 | AC | 4 ms | 1792 KB |
rand1 | AC | 4 ms | 1792 KB |
rand2 | AC | 4 ms | 1792 KB |