题意:这是一个题意很拗口的一道题,就是给你k个数,m<n然后需要判断自n开始到k结束的每个数,如果含它及以前的m个数的平均值即为pm,前n个数平均值即为pn,如果pm>pn且上一个点不是pm>pn或者是第一个点,就输出BUY ON DAY ?,另一种情况也一样处理。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int main() 6 { 7 int k,n,m; 8 double pn,pm,a[10005],sum[10005]; 9 while(scanf("%d%d%d",&m,&n,&k)!=EOF) 10 { 11 sum[0]=0; 12 int flag=-1; 13 for(int i=1;i<=k;i++) 14 scanf("%lf",&a[i]),sum[i]=sum[i-1]+a[i]; 15 for(int i=n;i<=k;i++) 16 { 17 pn=(sum[i]-sum[i-n])/n; 18 pm=(sum[i]-sum[i-m])/m; 19 if(pm>pn&&flag!=1) 20 { 21 flag=1; 22 printf("BUY ON DAY %d\n",i); 23 } 24 else if(pm<pn&&flag!=0) 25 { 26 flag=0; 27 printf("SELL ON DAY %d\n",i); 28 } 29 } 30 } 31 return 0; 32 }