NYOJ 642-牛奶

牛奶

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 2
描述
伊格内修斯每天都喝牛奶,他现在是在超市里,他要选择一瓶牛奶。牛奶在超市有很多种,所以伊格内修斯想知道哪种牛奶是最便宜的。

下面是一些规则:
1。伊格内修斯绝不会喝6天以前或更早的牛奶。这意味着,如果牛奶是2012-12-22生产的,伊格内修斯绝不会在2012年12月27日之后(包含12月27日)喝这瓶。
2。伊格内修斯每天要喝200毫升牛奶。
3。如果留在瓶子里的牛奶不到200毫升,伊格内修斯把它扔掉。
4。所有的在超市的牛奶都是今天刚生产出来的。

请注意,伊格内修斯只想要买一瓶牛奶,因此,如果一个瓶子的容积小于200毫升,你应该忽略它。
给你牛奶的一些信息,你的任务是告诉伊格内修斯牛奶是最便宜的。
输入
有多组测试数据
每组测试数据以一个整数N(1<=N<=100)开始,表示有N种牛奶。
以下N行,每行包含一个字符串S(长度最多100个字符),它表示该牛奶的品牌,然后是两个整数P(yuan)和V(ml),P是这瓶牛奶的价格,V是这瓶牛奶的体积。
输出
对于每个测试样例,你应该输出最便宜的牛奶的品牌。如果有超过一个最便宜的品牌,你应该输出体积最大的一个。
样例输入
2
Yili 10 500
Mengniu 20 1000
4
Yili 10 500
Mengniu 20 1000
Guangming 1 199
Yanpai 40 10000
样例输出
Mengniu
Mengniu
来源
hdu
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
	char ma[20];
	int v;
	double dan;
}map[1000];
bool cmp(node a,node b)
{
	if(a.dan==b.dan)
	{
		return a.v>b.v;
	}
	return a.dan<b.dan;
}
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		int i,j=0;
		for(i=0;i<n;i++)
		{
			char mm[20];
			scanf("%s",mm);
			int aa,bb;
			double da;
			scanf("%d%d",&aa,&bb);
			if(bb>=200)
			{
				int tian;
				tian=bb/200;
				if(tian>=5)
				{
					tian=5;
				}
				da=(bb*1.0)/(aa*1.0);
				map[j].v=bb;
				strcpy(map[j].ma,mm);
				map[j].dan=(aa*1.0)/tian;//看看一天谁花的钱少
				j++;
			}	
		}
		sort(map,map+j,cmp);
		printf("%s\n",map[0].ma);
	}
	return 0;
} 


你可能感兴趣的:(nyoj,基础模拟)