款待奶牛

问题 A: 款待奶牛(treat)

时间限制: 1 Sec  内存限制: 64 MB
提交: 24  解决: 2
[提交][状态][讨论版]

题目描述

FJ有n(1≤n≤2000)个美味的食物,他想卖掉它们来赚钱给奶牛。这些食物放在一些箱子里,它们有些有趣的特性:
(1)这些食物被编号为1~n,每一天FJ可以从这排箱子的头部或者尾部取出食物去卖;
(2)这些食物放得越久,年龄越大,价值越大,食物i有一个初始的价值V(i);
(3)放了a天后,年龄为a,食物最终的价值为V(i)×a。
给定每一个食物的初始价值v(i),请求出FJ卖掉它们后可以获得的最大价值,第一天出售的食物的年龄为1,此后每增加一天食物的年龄就增加1。

输入

第1行:一个整数n;
第i+l行:每行为食物i的初始价值V(i)。

输出

1行:FJ最终可以获得的最大价值。

样例输入

5
1
3
1
5
2

样例输出

43

提示


样例说明:FJ出售这些食物(初始价值1,3,1,5,2)的顺序为:第一天卖掉第1个,第二天卖掉第5个,第三天卖掉第2个,第四天卖掉第3个,第5天卖掉第4个,获得最大的价值 1×1+2×2+3×3+4×1+5×5=43。

写出来程序了,运行和样例输出答案一样,提交提示答案错误,不知为什么= =

#include<stdio.h>
int main()
{
    int n,i,count;
    long int s=0;
    int a[20001];
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(i=1,count=1;i<=n;i++,count++)
    {
        if(a[i]<a[n])
            s=s+count*a[i];
        else {
            s=s+count*a[n];
            n--;
            i--;
        }
    }
    printf("%ld
",s);
    return 0;

}
View Code
原文地址:https://www.cnblogs.com/great-xxr/p/5682723.html