腾讯笔试第四题AC代码,求大神给出2,3,5的代码
#include<iostream> #include<string> #include<vector> #include<stack> #include<cstring> using namespace std; int main(){ int n; cin>>n; vector<long long> nums(n,0); vector<long long> sum(n,0); for(int i=0; i<n; i++) cin>>nums[i]; sum[0] = nums[0]; for(int i=1; i<n; i++) sum[i] = sum[i-1] + nums[i]; stack<int> s; long long res = -1; for(int i=0; i<n; i++) { while(!s.empty() && nums[i] < nums[s.top()]) { int idx = s.top(); s.pop(); int ed = i-1; int st; if(s.empty()) st=0; else st = s.top()+1; res = max(res, (sum[ed] - sum[st] + nums[st]) * nums[idx]); } s.push(i); } while(!s.empty()) { int idx = s.top(); s.pop(); int ed = n-1; int st; if(s.empty()) { res = max(res, sum[n-1] * nums[idx]); } else{ st = s.top()+1; res = max(res, (sum[ed] - sum[st] + nums[st]) * nums[idx]); } } cout<<res<<endl; return 0; }
#腾讯##笔试题目#