您的位置:首页 > 其它

POJ 2431 Expedition——贪心

2018-01-26 16:35 295 查看
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn = 1e6 + 5;
struct Data { int a, b; } data[10005];
int N, L, P, road[maxn];

int main() {
while (~scanf("%d", &N)) {
memset(road, 0, sizeof(road));
for (int i = 1; i <= N; i++) scanf("%d %d", &data[i].a, &data[i].b);
scanf("%d %d", &L, &P);
for (int i = 1; i <= N; i++) {
road[L - data[i].a] = data[i].b;
}
priority_queue<int> q;
int ans = 0;
for (int i = 0; i <= L; i++) {
if (i > P) {
if (q.empty()) break;
P += q.top(); q.pop();
ans++;
}
if (road[i]) q.push(road[i]);
}
if (P < L) printf("-1\n");
else printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: