Submission #590621

#TimeUsernameProblemLanguageResultExecution timeMemory
590621VanillaDetecting Molecules (IOI16_molecules)C++17
100 / 100
59 ms6176 KiB
#include <bits/stdc++.h>
#include "molecules.h"
typedef long long int64;
using namespace std;

vector<int> find_subset(int l, int u, vector<int> w) {
    int n = w.size();
    vector <pair <int, int> > a;
    for (int i = 0; i < n; i++) {
        a.push_back({w[i], i});
    }
    sort(a.begin(), a.end());
    int it = -1;
    int64 sum = 0;
    queue <int> dq;
    bool good = 0;
    while (it != n) {
        // cout << it << " " << sum << " " << dq.size() << "\n";
        if (sum < l) {
            dq.push(a[++it].second);
            sum+=a[it].first;
        }
        else if (sum > u) {
            sum-=w[dq.front()];
            dq.pop();
        }
        else {
            good = 1;
            break;
        }
    }
    // cout << good << " " << dq.size() << "\n";
    vector <int> rs;
    if (good) {
        while (!dq.empty()) {
            rs.push_back(dq.front());
            dq.pop();
        }
    }
    return rs;
}
#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...