POJ 1527 Making the Grade G++

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <cmath>
using namespace std;
//英语      看博友分析       以博友程序为准     抄博友程序      模拟          
double da[1000];//成绩 
double zz[1000];//最终成绩 
double avg[1000]; 
int qq[1000];//缺勤数 
double cj[1000];//成绩 
double mean;
double sd;
double fun(double cj)//mean平均成绩    sd方差
{
	//cout<<mean<<" "<<sd<<endl;
	if(cj>=(mean+sd))//抄博友程序 
	{
		//cout<<"fun0"<<endl;
		return 4.0;
	}else if(cj>=mean)
	{
		//cout<<"fun1"<<endl;
		return 3.0;
	}else if(cj>=(mean-sd))
	{
		//cout<<"fun2"<<endl;
		return 2.0;
	}else
	{
		//cout<<"fun3"<<endl;
		return 1.0;
	} 
} 
int main()
{
	int T;
	cin>>T;
	cout<<"MAKING THE GRADE OUTPUT"<<endl;
	while(T--)
	{
		int n,m;
		cin>>n>>m;
		mean=0;
		sd=0;		
		for(int i=0;i<n;i++)
		{
			double sum=0;
			for(int j=0;j<m;j++)
			{
				cin>>da[j];
				sum=da[j]+sum;				
			}
			sort(da,da+m);
			double a;
			if(m<=2)
			{
				a=sum/m;
				//cout<<a<<endl;
			}else
			{
				sum=sum-da[0];
				a=sum/(m-1);//除最差成绩外个人平均成绩 
				//cout<<a<<endl;				
			}
			int jl;//抄博友 
			cin>>jl>>qq[i];
			zz[i]=a+jl/2*3;//抄博友程序 
			//cout<<"zz "<<zz[i]<<endl;
			avg[i]=a;
			mean=mean+avg[i];//抄博友程序		
		}
		mean=mean/n;
		//cout<<"mean "<<mean<<endl;
		for(int i=0;i<n;i++)
		{
			sd=sd+(avg[i]-mean)*(avg[i]-mean);//抄博友程序 
		}
		sd=sd/n;
		sd=sqrt(sd);//抄博友程序 
		//cout<<"sd "<<sd<<endl;
		for(int i=0;i<n;i++)
		{
			//cout<<zz[i]<<endl;
			cj[i]=fun(zz[i]);
			//cout<<cj[i]<<endl;
		}
		double jg=0;
		for(int i=0;i<n;i++)
		{
			//cout<<"new "<<cj[i]<<endl;
			if(qq[i]==0)
			{
				cj[i]=cj[i]+1;
			}else
			{
				cj[i]=cj[i]-qq[i]/4;
			}
			if(cj[i]<0)
			{
				cj[i]=0;
			}
			if(cj[i]>4)
			{
				cj[i]=4;
			}
			//cout<<cj[i]<<endl;
			jg=jg+cj[i];
		}
		cout<<fixed<<setprecision(1)<<jg/n<<endl;		
	}
	cout<<"END OF OUTPUT"<<endl;
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值