本文主要是介绍zoj 3908 Number Game(STL),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目连接:zoj 3908 Number Game
代码
#include <cstdio>
#include <cstring>
#include <set>
#include <vector>
#include <algorithm>using namespace std;
typedef long long ll;
typedef multiset<int>::iterator iter;int N, M, K;
multiset<int> G;
vector<int> S;void init () {G.clear();scanf("%d%d%d", &N, &M, &K);int x;for (int i = 0; i < N; i++) {scanf("%d", &x);if (x == 0) continue;G.insert(x);}
}ll solve () {S.clear();while (!G.empty()) {iter it = G.end(); it--;int u = *it;G.erase(it);it = G.upper_bound(K-u);if (it == G.begin()) continue;it--;int v = *it;G.erase(it);S.push_back(u * v);}ll ret = 0;sort(S.begin(), S.end());int n = S.size();for (int i = 1; i <= M && i <= n; i++) {ret += S[n-i];}return ret;
}int main () {int cas;scanf("%d", &cas);while (cas--) {init();printf("%lld\n", solve());}return 0;
}
这篇关于zoj 3908 Number Game(STL)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!