是我没理解题意?用一个deque不能解决问题?
#include<iostream>
#include<deque>
using namespace std;
int MaxValue(deque<int> queue)
{
int sum=0;
int price=1;
while(!queue.empty())
{
int start=queue.front();
int end=queue.back();
if(start<end)
{
queue.pop_front();
sum+=price*start;
}
else
{
queue.pop_back();
sum+=price*end;
}
price++;
}
return sum;
}
int main()
{
int num;
cin>>num;
int i=0;
int tmp;
deque<int> queue;
while(i<num)
{
cin>>tmp;
queue.push_back(tmp);
i++;
}
int ret=MaxValue(queue);
cout<<ret<<endl;
//system("pause");
return 0;
}