您的位置:首页 > 产品设计 > UI/UE

CF 12C Fruits

2015-06-25 22:14 597 查看
仔细做一下就好了

有许多细节处理(也许我做麻烦了)

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;

struct fr
{
char name[110];
int sum;
int pp;
}data[110];
int cmp1(const fr&a,const fr&b)
{
return a.sum > b.sum;
}
int cmp2(const fr&a,const fr&b)
{
return a.sum < b.sum;
}
int main()
{
int n,m;
int price[110];
while(cin>>n>>m)
{
for(int i = 0;i < n;i ++)
cin>>price[i];

sort(price,price+n);
int k = m;
for(int i = 0;i < m; i ++)
{
cin>>data[i].name;
data[i].sum = 1;
data[i].pp = 0;
int flag = 1;
for(int j = 0;j < i;j ++)
{
if(strcmp(data[i].name,data[j].name) == 0)
{
data[j].sum ++;
flag = 0;
break;
}
}
if(flag == 0)
k--;
}
sort(data,data+m,cmp1);
int Min = 0;
for(int i = 0;i < n&&i < k;i ++)
{
data[i].pp = price[i];
Min += data[i].sum*data[i].pp;
}
if(k > n)
{
for(int i = m-1;i < k;i ++)
Min += price[m-1]*data[i].sum;
}
sort(price,price+n,greater<int>());
int Max = 0;
for(int i = 0;i < n&&i < k;i ++)
{
Max += data[i].sum*price[i];
}
cout<<Min<<" "<<Max<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: