最大子数组和问题,dp或者分治。。
#include <bits/stdc++.h> #define rep(i, a, b) for(int i = a; i <= b; i++) #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b)) #define ll long long int gcd(int a, int b){return b == 0 ? a : gcd(a%b, a);} const int N = 20000010; int main(int n, char**v) { int a[N], dp = 0, top = 0, len = 0, m; scanf("%d", &n); for (int i = 0; i < n && scanf("%d", &a[i]); i++) { m = a[i]; if (m >= top) len++, dp = max(dp, len), top = m; else len = 1, top = a[i]; } printf("%d ", dp); return 0; }