Submission #1271618

#TimeUsernameProblemLanguageResultExecution timeMemory
1271618david_g611Detecting Molecules (IOI16_molecules)C++20
100 / 100
31 ms8364 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;
}

Compilation message (stderr)

molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...