# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
829677 | Boas | Detecting Molecules (IOI16_molecules) | C++17 | 39 ms | 8232 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "molecules.h"
using namespace std;
#include <bits/stdc++.h>
#define MAX_N 200001
#define ALL(x) x.begin(), x.end()
#define loop(x, i) for (int i = 0; i < (x); i++)
typedef int64_t in64;
typedef pair<in64, int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
typedef set<int> si;
in64 diff(in64 i, in64 l, in64 u)
{
if (i < l)
return l - i;
if (i > u)
return i - u;
return 0;
}
vi find_subset(int l, int u, vi w)
{
in64 alles = accumulate(ALL(w), (in64)0);
if (alles < l)
return {};
if (alles <= u)
{
vi ret;
loop(w.size(), i) ret.push_back(i);
return ret;
}
vii sortedMolecules; // first weight, second real index
loop(w.size(), i)
{
if (w[i] > u)
continue;
if (w[i] >= l)
return {i};
sortedMolecules.push_back({w[i], i});
}
sort(ALL(sortedMolecules));
int n = sortedMolecules.size();
in64 minSum = 0;
in64 maxSum = 0;
vi mols;
for (int k = 1; k <= n; k++)
{
maxSum += sortedMolecules[n - k].first;
minSum += sortedMolecules[k - 1].first;
mols.push_back(sortedMolecules[k - 1].second);
if (maxSum < l)
continue;
if (minSum > u)
break;
if (minSum >= l)
return mols;
if (maxSum <= u)
{
mols.resize(k);
loop(k, j) mols[j] = (sortedMolecules[n - j - 1].second);
return mols;
}
in64 sum = minSum;
int startIndex = 0;
while (sum < l)
{
sum -= sortedMolecules[startIndex].first;
sum += sortedMolecules[k + startIndex].first;
startIndex++;
if (startIndex >= n)
break;
if (startIndex + k >= n)
break;
}
if (sum < l || sum > u)
return {};
vi ret(k);
for (int i = 0; i < k; i++)
{
ret[i] = sortedMolecules[i + startIndex].second;
}
return ret;
}
return {};
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |