# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1271618 | david_g611 | Detecting Molecules (IOI16_molecules) | C++20 | 31 ms | 8364 KiB |
#include <bits/stdc++.h>
#include "molecules.h"
using namespace std;
using ll=long long;
struct element
{
ll val, idx;
const bool operator < (const element &o) const{
return val<o.val;
}
};
vector<int> find_subset(int l, int u, vector<int> w)
{
int n=w.size();
element v[n+1];
for(int i=0; i<n; i++)
{
v[i+1].idx=i;
v[i+1].val=w[i];
}
sort(v+1, v+n+1);
vector<ll> pref(n+2, 0);
vector<ll> suf(n+2, 0);
pref[0]=0;
suf[n+1]=0;
for(int i=1; i<=n; i++)pref[i]=pref[i-1]+v[i].val;
for(int i=n; i>=1; i--)suf[i]=suf[i+1]+v[i].val;
vector<int> ans;
for(int k=1; k<=n; k++)
{
if(pref[k]<=u && suf[n-k+1]>=l)
{
for(int catest=k; catest>=0; catest--)
{
int catedr=k-catest;
ll val=pref[catest]+suf[n-catedr+1];
if(l<=val && val<=u)
{
for(int i=1; i<=n; i++)
if(i<=catest || i>=n-catedr+1)
ans.push_back(v[i].idx);
return ans;
}
}
}
}
return ans;
}
컴파일 시 표준 에러 (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... |