Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
180460 | C班-范浩宇 | 音乐会 | C++ | 通过 | 100 | 148 MS | 4084 KB | 829 | 2024-08-21 13:44:39 |
#include <bits/stdc++.h> using namespace std; long long st[500010], n, top = 1, m; long long ans; int main() { cin >> n; long long a; cin >> st[1]; for (long long i = 2; i <= n; i++) { cin >> a; if (st[top] > a) { top++, ans++, st[top] = a; } else { long long l = 1, r = top; while (l < r) { m = (l + r) >> 1; if (r == l + 1) m = r; if (a >= st[m]) r = m - 1; else l = m; } ans += top - l + 1; while (top > 0 && st[top] < a) top--; st[++top] = a; } } cout << ans << endl; }