int n; while(cin >> n){     vector<int> ws(n);     for(int i = 0; i < n; i++)         cin>>ws[i];     vector<long> wsum(n);     wsum[0] = ws[0];     for(int i = 1; i < n; i++)         wsum[i] = wsum[i - 1] + ws[i];     vector<int> sv(1,0);     long maxx = 0;      int index = 1;     while(index < n || (index == n && (int)sv.size() > 0)){         if(index < n && ((int)sv.size() == 0 || ws[index] >= ws[sv.back()])){             sv.push_back(index);             index++;         }else{             int mn = ws[sv.back()];             sv.pop_back();             long curSum = 0;              if((int)sv.size() > 0){                 curSum = wsum[index - 1] - wsum[sv.back()];             }else curSum = wsum[index - 1];             curSum = mn * curSum;             maxx = max(maxx, curSum);         }     }      cout << maxx << endl; } 老哥,给你补上第四道🤣
点赞 评论

相关推荐

牛客网
牛客企业服务