题目描述如下:
小Y喜欢“台阶”。在一个长度为n的数列a1..an中,a¡、aj、ak构成一个“台阶”当且仅当a¡>aj>ak且1<=i<=j<=k<=n。由于时间仓促,小Y来不及对所有台阶进行计数,于是寻求你的帮助。给定一个数列,求其中台阶的个数。
[输入格式] 输入第一行包含一个正整数n,表示数列的长度。
第二行包含n个正整数,为待求数列。
[输出格式]
输出包含一个整数,即待求数列中”台阶”的个数。
[输入样例#1]
4
4321
[输出样例#1] 4
[数据范围]
Subtask 对于所有数据,有0 < a <= 10^5, n <= 10^5。
c++树状数组题,求解,谢谢了!
以下是暴力代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int a[N];
long long ans = 0, n;
int main(){
scanf("%lld", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int k = 1; k <= n; k++)
for (int j = 1; j <= k; j++)
for (int i = 1; i <= j; i++)
if (a[i] > a[j] && a[j] > a[k])
ans++;
printf("%lld", ans);
return 0;
}
感谢各位dalao!