原題下載
答案:
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<int,int> pii;
vector<pii> V;
int N;
int main(void)
{
ifstream fin ("pairup.in");
ofstream fout ("pairup.out");
fin >> N;
for (int i=0; i<N; i++) {
int x, y;
fin >> x >> y;
V.push_back(pii(y,x));
}
sort(V.begin(), V.end());
int M = 0, i=0, j=N-1;
while (i <= j) {
int x = min(V[i].second, V[j].second);
if (i==j) x /= 2;
M = max(M, V[i].first + V[j].first);
V[i].second -= x;
V[j].second -= x;
if (V[i].second == 0) i++;
if (V[j].second == 0) j--;
}
fout << M << "\n";
return 0;
}
以上就是關于【USACO 2017 US Open Contest, Silver Problem 1. Paired Up】的解答,如需了解學校/賽事/課程動態,可至翰林教育官網獲取更多信息。
往期文章閱讀推薦:
NOAI人工智能奧賽 2026-2027 活動章程出爐:新規則必看!
NOAI、UKOAI、USAAIO三大AI奧賽新賽季全面啟動:留學申請的“核武器”來了!

? 2026. All Rights Reserved. 滬ICP備2023009024號-1