找寻每一段和的规律,利用vector容器
#include <iostream> using namespace std; #include <vector> const int N = 1e5+10; int n; long long ans =0; int main() { scanf("%d",&n); vector<long long> v; int cnt = 0,last; for(int i=1;i<=n;i++) { int x; scanf("%d",&x); if(i==1||x>=last) cnt++; else { v.push_back(cnt); cnt = 1; } last = x; } v.push_back(cnt); for(int i=0;i<v.size();i++) ans += v[i]*(v[i]+1)/2; printf("%lld",ans); return 0; }