Submission #1219615

#TimeUsernameProblemLanguageResultExecution timeMemory
1219615AMel0nDetecting Molecules (IOI16_molecules)C++20
100 / 100
56 ms12100 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first 
#define S second

#include "molecules.h"
vector<int> unsorted;
vector<int> ans(multiset<ll> &simga){
    vector<int> v;
    FOR(i, unsorted.size()) {
        if (simga.find(unsorted[i]) != simga.end()){
            simga.erase(simga.find(unsorted[i]));
            v.push_back(i);
        }
    }
    return v;
}
vector<int> find_subset(int l, int u, vector<int> W) {
    unsorted = W;
    sort(all(W));
    ll sum = 0;
    multiset<ll> res;
    FOR(i, W.size()) {
        if (sum + W[i] > u) {
            if (res.empty()) return {};
            for(ll j = i; j < W.size() && sum < l; j++) {
                sum -= *res.begin();
                res.erase(res.begin());
                sum += W[j];
                res.insert(W[j]);
            }
            if (l <= sum && sum <= u) return ans(res);
            else return {};
        } else if (l <= sum + W[i] && sum + W[i] <= u) {
            sum += W[i];
            res.insert(W[i]);
            return ans(res);
        } else {
            sum += W[i];
            res.insert(W[i]);
        }
    }
    return {};
}

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...