斯沃琪(SWQ)的吃货计划
斯沃琪(SWQ)的吃货计划 |
难度级别:A; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B |
试题描述
|
SWQ正在完成自己的“尝遍世界的美食”(虽然她破产了,但还是可以从地上捡东西吃呀……真不卫生……)计划。 |
输入
|
*第一行:有三个正整数n,m,k表示SWQ每顿饭最多吃m道菜,有n道菜SWQ可以选择,这些菜被分成了k类
*第二行:有k个整数表示这k种类别的菜最多可以吃多少份。 *接下来的n行每行有两个数,分别代表所含的食材数与所属的类别。 |
输出
|
*一个数,代表吃货SWQ最多可以吃到几种食材。
|
输入示例
|
6 6 3
3 3 2 15 1 15 2 10 2 15 2 10 2 5 3 |
输出示例
|
60
|
其他说明
|
LJX认为:
n<=200 m<=100 k<=100 |
#include<iostream> using namespace std; int a[200][3],b[200],c[200],h[100]; int i,j,sum=0,cnt=0,n,m,k,g; int main() { cin>>n>>m>>k; for(i=0;i<k;i++) cin>>h[i]; for(i=0;i<n;i++) cin>>b[i]>>c[i]; for(i=0;i<n;i++) { g=i; for(j=i+1;j<n;j++) if(b[g]<b[j]) g=j; if(g!=i) { swap(b[g],b[i]); swap(c[g],c[i]); } } for(i=0;i<n;i++) { if(h[c[i]-1]>0&&m>0) { h[c[i]-1]--; m--; sum+=b[i]; } if(m==0) break; } cout<<sum; //system("pause"); return 0; }