提出 #7576185
ソースコード 拡げる
#include <bits/stdc++.h>
#define rep(i, n) for (ll i = 0; i < (n); i++)
#define rep2(i, a, b) for (ll i = (a); i < (b); i++)
typedef uint64_t ull;
typedef int64_t ll;
typedef std::pair<ll, ll> PLL;
using namespace std;
signed main() {
ll N;
cin >> N;
vector<ll> t(N+1); // t[val] = index
rep(i, N) {
ll x;
cin >> x;
t[x] = i+1;
}
ll ans = 0;
set<ll> s;
for (ll val=N; val>=1; val--) {
{
// 右側に最大値がある場合
ll j, i1, i2;
auto it = s.lower_bound(t[val]);
if (it == s.end())
goto END1;
i1 = *it;
it++;
if (it == s.end())
i2 = N+1;
else
i2 = *it;
it = s.lower_bound(t[val]);
if (it == s.begin()) {
j = 0;
} else {
it--;
j = *it;
}
// printf("right %d %dx%d\n", val, (t[val]-j) , (i2-i1));
ans += val * (t[val]-j) * (i2-i1);
END1: ;
}
{
// 左側に最大値がある場合
ll j2, j1, i;
auto it = s.lower_bound(t[val]);
if (it == s.begin()) {
goto END2;
}
it--;
j1 = *it;
if (it == s.begin()) {
j2 = 0;
} else {
it--;
j2 = *it;
}
it = s.lower_bound(t[val]);
if (it == s.end()) {
i = N+1;
} else {
i = *it;
}
// printf("left %dx%d\n", val, (j1-j2), (i-t[val]));
ans += val * (j1-j2) * (i-t[val]);
END2: ;
}
s.insert(t[val]);
}
cout << ans << endl;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Second Sum |
| ユーザ | bobuhiro11 |
| 言語 | C++14 (GCC 5.4.1) |
| 得点 | 500 |
| コード長 | 1606 Byte |
| 結果 | AC |
| 実行時間 | 97 ms |
| メモリ | 5760 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt |
| All | 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 01-small-01.txt, 01-small-02.txt, 01-small-03.txt, 01-small-04.txt, 01-small-05.txt, 02-large-01.txt, 02-large-02.txt, 02-large-03.txt, 02-large-04.txt, 02-large-05.txt, 03-max-01.txt, 03-max-02.txt, 04-min-01.txt, 05-sorted-01.txt, 05-sorted-02.txt, 06-almost-sorted-01.txt, 06-almost-sorted-02.txt, 06-almost-sorted-03.txt, 06-almost-sorted-04.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00-sample-01.txt | AC | 1 ms | 256 KiB |
| 00-sample-02.txt | AC | 1 ms | 256 KiB |
| 00-sample-03.txt | AC | 1 ms | 256 KiB |
| 01-small-01.txt | AC | 1 ms | 256 KiB |
| 01-small-02.txt | AC | 1 ms | 256 KiB |
| 01-small-03.txt | AC | 1 ms | 256 KiB |
| 01-small-04.txt | AC | 1 ms | 256 KiB |
| 01-small-05.txt | AC | 1 ms | 256 KiB |
| 02-large-01.txt | AC | 84 ms | 5120 KiB |
| 02-large-02.txt | AC | 51 ms | 3328 KiB |
| 02-large-03.txt | AC | 88 ms | 5248 KiB |
| 02-large-04.txt | AC | 90 ms | 5376 KiB |
| 02-large-05.txt | AC | 54 ms | 3456 KiB |
| 03-max-01.txt | AC | 97 ms | 5760 KiB |
| 03-max-02.txt | AC | 97 ms | 5760 KiB |
| 04-min-01.txt | AC | 1 ms | 256 KiB |
| 05-sorted-01.txt | AC | 92 ms | 5504 KiB |
| 05-sorted-02.txt | AC | 94 ms | 5632 KiB |
| 06-almost-sorted-01.txt | AC | 91 ms | 5248 KiB |
| 06-almost-sorted-02.txt | AC | 84 ms | 5248 KiB |
| 06-almost-sorted-03.txt | AC | 94 ms | 5504 KiB |
| 06-almost-sorted-04.txt | AC | 85 ms | 5248 KiB |