比赛 20111102 评测结果 AWWWW
题目名称 个人所得税 最终得分 20
用户昵称 Cloud 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-02 20:39:37
显示代码纯文本
#include<fstream>
#include<iomanip>
#include<cstring>
using namespace std;
int Pay[11]={0,500,2000,5000,20000,40000,60000,80000,100000,999999},Income[5]={0,0,20000,50000,9999999};
int m[50001][13]={0};
double t[50001]={0};
int main(void)
{
	ifstream fin("personaltax.in");
	ofstream fout("personaltax.out");
	int n;
	fin>>n;
	int j,i,a;
	double b;
	string st;
	while(n)
	{
		fin>>st;
		if(st=="#")break;
		if(st=="PAY")
		{
			fin>>j;
			fin>>i;
			fin>>st;
			fin>>a;
			m[j][i]+=a;
		}
		else
		{
			fin>>j;
			fin>>st;
			fin>>i;
			if(i<=4000)
			{
				b=(double)i;
				i-=800;
				if(i>0)
				{
					b=i;
					t[j]+=(double)b*0.2;
				}
			}
			else
			{
				b=(double)i*0.8;
				for(int k=2;k<5;k++)
				if(i<=Income[k])
				{
					t[j]+=(double)(b*k*0.1);
					break;
				}
			}
		}
	}
	double num=0;
	for(j=1;j<=n;j++)
	{	
		for(i=1;i<=12;i++)
		{
			if(m[j][i]==0||m[j][i]<=800)continue;
			m[j][i]-=800;
			for(int k=1;k<=9;k++)
			{
				if(m[j][i]>=Pay[k])
				{
					b=(double)((Pay[k]-Pay[k-1])*k*5);
					t[j]+=(double)(b/100);
				}
				else	
				{
					b=(double)((m[j][i]-Pay[k-1])*k*5);
					t[j]+=(double)(b/100);
					break;
				}
			}
		}
		num+=t[j];
	}
	fout<<setiosflags(ios::fixed)<<setprecision(2)<<num;
	fin.close();
	fout.close();
	return 0;
}