View Code of Problem 61

#include<bits/stdc++.h>
using namespace std;

int main(void)
{
  int i,j,t,n,nmin,cnt;
  vector <int> dp,num; //dp表示到第i个绳子所能承受的最大重量
  while(t--)
  {
    cin>>n;
    num.resize(n);
    dp.resize(n);
    for(i=0;i<n;++i)
      cin>>num[i];
    dp[0]=num[0];
    for(i=1;i<n;++i)
    {
      cnt=0;nmin=num[i];
      for(j=i;j>=0;j--)
      {
        ++cnt;
        if(nmin>num[i])
          nmin=num[i];
        dp[i]=max(dp[i],cnt*nmin);
      }
    }
    cout<<dp[n-1]<<endl;
    dp.clear();
    num.clear();
  }
}

Double click to view unformatted code.


Back to problem 61