Submission #1163104

#TimeUsernameProblemLanguageResultExecution timeMemory
11631048pete8Detecting Molecules (IOI16_molecules)C++20
100 / 100
40 ms13740 KiB
#include "molecules.h"
#include<vector>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
#define int long long
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define pb push_back
#define f first
#define s second
vector<int32_t> find_subset(int32_t l, int32_t u, vector<int32_t> w){
    vector<pii>have;
    int sum=0;
    for(int i=0;i<w.size();i++)have.pb({w[i],i});
    sort(all(have));
    int i=0;
    vector<int32_t>ans;
    vector<int>on(w.size(),0);
    priority_queue<pii,vector<pii>,greater<pii>>pq;
    for(;i<have.size();i++){
        if(sum+have[i].f>l){
            if(sum+have[i].f<=u){
                ans.pb(have[i].s);
                return ans;
            }
            break;
        }
        sum+=have[i].f;
        ans.pb(have[i].s);
        pq.push({have[i].f,have[i].s});
        on[have[i].s]=1;
    }
    if(sum==l)return ans;
    ans.clear();
    if(i==0)return ans;
    while(i<have.size()&&sum<l){
        while(!pq.empty()&&!on[pq.top().s])pq.pop();
        sum+=(have[i].f-pq.top().f);
        on[pq.top().s]=0;
        on[have[i].s]=1;
        pq.push({have[i].f,have[i].s});
        pq.pop();
        i++;
    }
    if(sum<l)return ans;
    while(!pq.empty())ans.pb(pq.top().s),pq.pop();
    sort(all(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...