链接:https://ac.nowcoder.com/acm/contest/11746/C
来源:牛客网
题目描述
凡凡是一个上进的人,他的人生没有下坡路,他也讨厌带有”下坡路“的东西。
所以,对于凡凡来说,只有非降序的数组才是nice的(如:1,2,2,3,4,5,5);若数组元素个数为1,也满足非降序,也是nice的。
现在有一个长度为n的数组,凡凡想知道它的子数组中有多少个数组是nice的。
你能帮帮他吗?
对于子数组的定义,如果可以通过从开头和从结束分别删除若干个(可以为零或全部,前后删除个数不必相同)元素来从数组b获得数组a,则称数组a是数组b的子数组。(子数组包含原数组,但不包含空串)
输入描述:
第一行输入一个整数n(1≤n≤10^5),表示数组的长度。
第二行包含n个空格分隔的整数a1,a2,.,an(0≤ai≤10^9),为数组的元素。
输出描述:
输出给定数组的子数组中是nice数组的个数。(注意使用long long)
示例1
输入
5
1 2 3 4 5
输出
15
答案如下
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a[1000005];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
ll t=0,ans=0;
for(int i=1;i<=n;i++)
{
if(a[i]>a[i+1]||i==n)
{
ans+=((i-t+1)*(i-t)/2);
t=i;
}
}
cout<<ans;
return 0;
}