首页 > 代码库 > Maximum 贪心

Maximum 贪心

Maximum
Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu
Submit Status

Description

 

Let x1x2,..., xm be real numbers satisfying the following conditions:

 

a)
-xi ;
b)
x1 + x2 +...+ xm = b *  for some integers a and b (a > 0).

Determine the maximum value of xp1 + xp2 +...+ xpm for some even positive integer p.

 

Input

Each input line contains four integers: mpab ( m2000, p12p is even). Input is correct, i.e. for each input numbers there existsx1x2,..., xm satisfying the given conditions.

 

Output

For each input line print one number - the maximum value of expression, given above. The answer must be rounded to the nearest integer.

 

Sample Input

 

1997 12 3 -318 
10 2 4 -1

 

Sample Output

 

189548 
6

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<set>
 4 #include<math.h>
 5 #include<iostream>
 6 #include<algorithm>
 7 using namespace std;
 8 int main()
 9 {
10     int m,p,a,b;
11     double ans;
12     while(~scanf("%d%d%d%d",&m,&p,&a,&b))
13     {
14         if(b<0)
15             b=-b,ans=a*b*pow(sqrt(a*1.0)/a,p),m-=a*b;
16         else ans=b*pow(sqrt(a*1.0),p),m-=b;
17         int rr=m/(a+1);
18         m%=(a+1);
19         m--;
20         ans+=rr*(pow(sqrt(a*1.0),p*1.0)+a*pow(sqrt(a*1.0)/a,p*1.0));
21         if(m>0){
22         ans+=m*pow(sqrt(a*1.0)/a,p);
23         ans+=pow(m*sqrt(a*1.0)/a,p);
24         }
25         printf("%.0lf\n",ans);
26     }
27 }
View Code