腾讯笔试题——学习状态评分最高的时间段

60%
#include <bits/stdc++.h>

using namespace std;

int main() {
   long long n;
   cin >> n;
   long long max = 0;
   vector<long long> a(n);
   long long i = 0;
   long long j = 0;
   for (i = 0; i < n; i++) {
      cin >> a[i];
   }
   if (n == 1) {
      cout << n * n;
      return 0;
   }
   long long sum = 0;
   long long min = 0;
   long long tmp = 0;
   for (i = 0; i < n; i++) {
      sum = 0;
      min = a[i];
      for (j = i; j < n; j++) {
         if (a[j] < min) {
            min = a[j];
         }
         sum += a[j];
         tmp = min * sum;
         if (tmp > max) {
            max = tmp;
         }
      }
   }
   cout << max;
   return 0;
}

大佬们,求解。
#腾讯##笔试题目#
全部评论
枚举每个值作为最小值的情况,用单调栈优化,最后求个最大的就行,
点赞 回复 分享
发布于 2019-09-02 01:15

相关推荐

点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务