/*
zoj_1338 模拟
看了N就才看到题意。。
就是说有一串数字是由升序和降序组成,要我们找所有升序的平均数和所有降序的平均数。
看懂题目的话就知道是很水的一道题,代码写的很恶心,懒的改了。
*/
#include <iostream>
#include <cstdio>
using namespace std;
int num[1010];
int main()
{
int i,len;
bool up,down;
int mid; //mid未判断升降序时临时记录
int time1,time2,num1,num2;//time1升序出现次数,time2降序出现次数,num1升序总元素数,num2降序总元素数
while( scanf( "%d",&num[0] ) && num[0] )
{
i=1;
while( scanf( "%d",&num[i] ) && num[i] )
i++;
len=i , num1=0 , num2=0 ;
mid=0 , up=false , down=false ;
time1=0 , time2=0;
for( i=1;i<len;i++ )
{
if( up && num[i]>=num[i-1] )
num1++;
else if( down && num[i]<=num[i-1] )
num2++;
else if( up && num[i]<num[i-1] )
{
up=false;
down=true;
num2++;
time2++;
}
else if( down && num[i]>num[i-1] )
{
down=false;
up=true;
num1++;
time1++;
}
else if( !up && !down && num[i]>num[i-1] )
{
up=true;
num1+=mid , mid=0;
num1++;
time1++;
}
else if( !up && !down && num[i]<num[i-1] )
{
down=true;
num2+=mid , mid=0;
num2++;
time2++;
}
else if( !up && !down && num[i]==num[i-1] )
mid++;
}
printf( "Nr values = %d: ",len );
if( time1==0 ) printf( "0.000000 " );
else printf( "%.6lf ",double(num1)/double(time1) );
if( time2==0 ) printf( "0.000000\n" );
else printf( "%.6lf\n",double(num2)/double(time2) );
}
return 0;
}
zoj 1338
最新推荐文章于 2019-09-24 11:26:14 发布