HDU 4544狭苦しいシリーズの物語――ウサギ撲滅(優先列)
1604 ワード
タイトル:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37957
コード:
コード:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std;
#define N 100005
struct node
{
int d,p;
friend bool operator<(node c,node d)
{
return c.p>d.p; //
}
}b[N];
int a[N];
int cmp(int a,int b)
{
return a>b;
}
int cmp1(node a,node b)
{
return a.d>b.d;
}
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
priority_queue<node>q;
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&b[i].d);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&b[i].p);
}
sort(a+1,a+1+n,cmp);
sort(b+1,b+1+m,cmp1);
int res=1;
__int64 ans=0;
int flag=0;
for(int i=1;i<=n;i++)
{
while(res<=m&&b[res].d>=a[i])
{
q.push(b[res]);
res++;
}
if(q.empty())
{
flag=1;
break;
}
else
{
ans=ans+q.top().p;
q.pop(); //
}
}
if(flag==1)
printf("No
");
else printf("%I64d
",ans);
}
}