Kefa decided to make some money doing business on the Internet for exactly n days. He knows that on the i-th day (1 ≤ i ≤ n) he makes ai money. Kefa loves progress, that's why he wants to know the length of the maximum non-decreasing subsegment in sequenceai. Let us remind you that the subsegment of the sequence is its continuous fragment. A subsegment of numbers is called non-decreasing if all numbers in it follow in the non-decreasing order.
Help Kefa cope with this task!
The first line contains integer n (1 ≤ n ≤ 105).
The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 109).
Print a single integer — the length of the maximum non-decreasing subsegment of sequence a.
6 2 2 1 3 4 1
3
3 2 2 9
3
In the first test the maximum non-decreasing subsegment is the numbers from the third to the fifth one.
In the second test the maximum non-decreasing subsegment is the numbers from the first to the third one.
题目大意:
寻找最长的非递减数列(也可以说是递增的最长数列,但是可以有相等的情况),输出长度
解题思路:
先将每一个非递减数列的长度存入一个sum数组里,然后再从大到小排一下序就ok了,
输出sum[0];
上代码:
/** 2015 - 09 - 24 晚上 Author: ITAK Motto: 今日的我要超越昨日的我,明日的我要胜过今日的我, 以创作出更好的代码为目标,不断地超越自己。 **/ #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <vector> #include <queue> #include <algorithm> #include <set> using namespace std; typedef long long LL; typedef unsigned long long ULL; const int maxn = 1e5+5; const int mod = 1e9+7; const double eps = 1e-7; int cmp(int a, int b) { return a > b; } int arr[maxn], sum[maxn]; int main() { int n, k=0; cin>>n; memset(sum, 0, sizeof(sum)); for(int i=0; i<n; i++) cin>>arr[i]; for(int i=1; i<n; i++) { if(arr[i] >= arr[i-1]) sum[k]++; else k++; } ///cout<<"k == "<<k<<endl; sort(sum, sum+k+1, cmp); cout<<sum[0]+1<<endl; return 0; }