cf C. Vasya and Robot

http://codeforces.com/contest/355/problem/C

枚举L和R相交的位置。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <algorithm>

 4 using namespace std;

 5 const __int64 inf=1e19;

 6 

 7 int n,l,r,ql,qr;

 8 int w[100100];

 9 int sum1[100100];

10 int sum2[100100];

11 __int64 min1(__int64 a,__int64 b)

12 {

13     if(a>b) return b;

14     else return a;

15 }

16 

17 int main()

18 {

19     while(scanf("%d%d%d%d%d",&n,&l,&r,&ql,&qr)!=EOF)

20     {

21         for(int i=1; i<=n; i++)

22         {

23             scanf("%d",&w[i]);

24             sum1[i]=sum1[i-1]+w[i];

25         }

26         for(int i=n; i>=1; i--)

27         {

28             sum2[i]=sum2[i+1]+w[i];

29         }

30         __int64 ans=inf;

31         for(int i=0; i<=n; i++)

32         {

33            int sum=(sum1[i]*l+sum2[i+1]*r);

34            if(i>n-i) sum+=(2*i-n-1)*ql;

35            else if(i<n-i) sum+=(n-2*i-1)*qr;

36            ans=min1(ans,(__int64)sum);

37         }

38         printf("%I64d\n",ans);

39     }

40     return 0;

41 }
View Code

 

你可能感兴趣的:(robot)