ans

huangjunxiang 2023-11-28 20:42:18 8 返回题目


来自一本通

#include<cstdio>
#include<algorithm>
using namespace std;
int hash[5000001]; 
struct ben
{
	int x,y;
}a[501];
int cmp(const ben &a,const ben &b)
{
	return a.y>b.y;
}
int main()
{
	int m,n;
	scanf("%d%d",&m,&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i].x);//完成期限
	for(int i=1;i<=n;i++)scanf("%d",&a[i].y);//罚款
	sort(a+1,a+n+1,cmp);//按照罚款数额从大到小进行选择排序
	int bj=0;
	int s=0;
	for(int i=1;i<=n;i++)
	{
		bj=1;
		for(int j=a[i].x;j>=1;j--)
		{
			if(hash[j]==0)
			{
				bj=0;
				hash[j]=1;
				break;
			}
		}
		if(bj==1)//要罚款
		{
			for(int k=n;k>=1;k--)
			{
				if(hash[k]==0)
				{
					hash[k]=1;
					break;
				}
			}
			s+=a[i].y;//累加罚款
		}
	}
	printf("%d",m-s);
	return 0;
}
{{ vote && vote.total.up }}