A-最小化價格
阿新 • • 發佈:2019-02-16
怎麼就沒想到用優先佇列呢(遺憾QWQ)……!!!
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+5; int a[maxn]; priority_queue<int,vector<int>,greater<int> >s;//從小到大排序 struct node { int a; int b; }b[maxn]; bool cmp(node x,node y) { return x.a<y.a; } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) scanf("%d%d",&b[i].a,&b[i].b); sort(a+1,a+n+1); sort(b+1,b+m+1,cmp); int ans=0; for(int i=n,j=m;i>0;i--) { for(;b[j].a>=a[i];j--) s.push(b[j].b); if(s.empty()) { printf("-1\n"); return 0; } ans+=s.top(); s.pop(); } printf("%d\n",ans); return 0; }