| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1325207 | csachy13 | Detecting Molecules (IOI16_molecules) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
int find_subset(int l, int u, int* w, int n, int* result) {
// sort(w, w + n);
vector<array<int, 2>> Z(n);
vector<int> G(n);
for (int i=0; i<n; i++) Z[i] = {w[i], i};
sort(Z.begin(), Z.end());
// for (int i=0; i<n; i++) G[Z[]]
int left_sum = 0, right_sum = 0;
for (int i=0; i<=n/2; i++) {
// cout << i << ' ' << left_sum << ' ' << right_sum << '\n';
if (max(left_sum, l) <= min(right_sum, u)) {
// cout << left_sum << ' ' << right_sum << '\n';
int size_loafer = i; i--;
while (left_sum < l || left_sum > u) {
// cout << i << ' ';
left_sum -= Z[i][0];
left_sum += Z[n - i - 1][0];
// cout << left_sum << ' ';
i--;
}
i++;
// cout << "[0, " << i << ") U [" << n - i - 1 << ", " << n << ")\n";
for (int j=0; j<i; j++) result[j] = Z[j][1];
for (int j=i; j<size_loafer; j++) result[j] = Z[n - j + i - 1][1];
return size_loafer;
}
left_sum += Z[i][0]; right_sum += Z[n - i - 1][0];
}
return 0;
}
// int main() {
// cin.tie(0); ios_base::sync_with_stdio(0);
// int loafer[] = {15, 17, 16, 18};int gopher[] = {6, 8, 8, 7};
// ll N = find_subset(10, 20, loafer, 4, gopher);
// for (int i=0; i<N; i++) {
// cout << gopher[i] << ' ';
// }
// return 0;
// }