# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1271616 | david_g611 | Detecting Molecules (IOI16_molecules) | C++20 | 0 ms | 328 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+1, 0);
vector<ll> suf(n+1, 0);
pref[1]=v[1].val;
suf[n]=v[n].val;
for(int i=2; i<=n; i++)pref[i]=pref[i-1]+v[i].val;
for(int i=n-1; 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-catedr;
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;
}
Compilation message (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... |