uva 11292

来源:互联网 发布:it服务项目经理证书 编辑:程序博客网 时间:2024/05/29 03:20
/* * 11292.cpp * *  Created on: Dec 31, 2012 *      Author: joker */#define Main 1#define INPUT_REDIRECT "11292.test"#if Main#include <cstdio>#include <algorithm>using namespace std;const int maxn = 20000 + 5;int diameter[maxn], knights[maxn];int main(int argc, char **argv) {#ifndef ONLINE_JUDGEfreopen(INPUT_REDIRECT, "r", stdin);#endifint n, m;while (scanf("%d%d", &n, &m) == 2 && n && m) {for (int i = 0; i < n; ++i)scanf("%d", diameter + i);for (int i = 0; i < m; ++i)scanf("%d", knights + i);sort(diameter, diameter + n);sort(knights, knights + m);int cost = 0;int cur = 0;for (int i = 0; i < m; ++i) {if (knights[i] >= diameter[cur]) { //骑士能力大于等于斩杀恶龙直径cost += knights[i];if (++cur == n)break;}}if (cur < n)printf("Loowater is doomed!\n");elseprintf("%d\n", cost);}return 0;}#endif

自己写的代码和答案还是有差距。。有些太啰嗦,简单的事情搞复杂了。

/* * 11292.cpp * *  Created on: Dec 31, 2012 *      Author: joker */#define Main 0#define INPUT_REDIRECT "11292.test"#if Main#include <iostream>#include <fstream>#include <vector>#include <algorithm>#include <list>using namespace std;int main(int argc, char **argv) {#ifdef INPUT_REDIRECTifstream fin(INPUT_REDIRECT, ios::in);cin.rdbuf(fin.rdbuf());#endifint n, m, minsum;int tmp;outer: while (cin >> n >> m && (n || m)) {vector<int> radius;vector<int> knights;minsum = 0;for (int i = 0; i < n; ++i) {cin >> tmp;radius.push_back(tmp);}for (int i = 0; i < m; ++i) {cin >> tmp;knights.push_back(tmp);}sort(knights.begin(), knights.end());vector<int>::iterator iter;for (int i = 0; i < n; ++i) {iter = lower_bound(knights.begin(), knights.end(), radius[i]);if (iter == knights.end()) {cout << "Loowater is doomed!" << endl;goto outer;} else {minsum += *iter;knights.erase(iter);}}cout << minsum << endl;}}#endif