| 记录编号 |
618329 |
评测结果 |
AAAAAAAAAAAAAAAAAAAAAAAAA |
| 题目名称 |
sort |
最终得分 |
100 |
| 用户昵称 |
终焉折枝 |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
0.985 s |
| 提交时间 |
2026-08-28 22:57:36 |
内存使用 |
5.70 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#include<algo/debug.h>
#else
#define debug(...) 42
#endif
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vi = vector<int>;
using vll = vector<ll>;
#define pb emplace_back
#define mk make_pair
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(x) (int)((x).size())
#define ciallo(x) cerr << (x) << '\n';
template <typename T, typename U>
inline bool chmin(T& a, const U& b){return (b < a ? a = b, true : false);}
template <typename T, typename U>
inline bool chmax(T& a, const U& b){return (a < b ? a = b, true : false);}
const int N = 2 * 1e6 + 5;
int n;
int a[N], pos[N];
ll ans = 0;
void solve(){
cin >> n;
for(int i = 1;i <= n;i ++){
cin >> a[i];
pos[a[i]] = i;
}
int mx = -1;
ans = n - 1;
for(int i = n;i >= 1;i --){
if(a[i] > mx){
mx = a[i];
ans += max(0, n - a[i] - 1);
}
}
bool flag = 1;
for(int i = 1;i <= n;i ++){
if(pos[i] > n - i + 2){
flag = false;
break;
}
}
if(!flag) ans ++;
cout << ans << '\n';
}
int main(){
#ifdef LOCAL
//freopen("test.txt", "r", stdin);
#endif
cin.tie(0) -> sync_with_stdio(0);
int T = 1;
// cin >> T;
while(T --) solve();
#ifdef LOCAL
cout << "Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s\n ";
#endif
return 0;
}