POJ 2431 Expedition

来源:互联网 发布:电脑怎么用手机淘宝 编辑:程序博客网 时间:2024/06/04 18:46
#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;const int maxn = 3e4+5;struct node{int dis;int fue;bool operator< (const node&I)const { //按照fue由da到xiao排列 return I.fue > fue; }};bool com (node a, node b){return a.dis > b.dis;}node a[maxn];priority_queue <node> pque;int main (){int n, l, p, tempdis,i,ans;scanf("%d",&n);memset(a,0,sizeof(a));for (int i = 0; i < n; i++){scanf("%d%d",&a[i].dis, &a[i].fue );}sort(a,a+n,com);scanf("%d%d", &l, &p);tempdis = p;i = 0;ans = 0;while (!pque.empty() )pque.pop() ;while ( tempdis < l){while ( i < n && a[i].dis >= l - tempdis){  // 符号写反,wa了1晚上... pque.push(a[i]);i++; }if (!pque.empty() ){tempdis += (pque.top()).fue ;pque.pop() ;ans++;}else break;}if (tempdis >= l){printf("%d\n",ans);}else printf("-1\n");}