Submission #1307430

#TimeUsernameProblemLanguageResultExecution timeMemory
1307430ballbreakerDetecting Molecules (IOI16_molecules)C++20
100 / 100
43 ms5156 KiB
#include<bits/stdc++.h>
using namespace std;
// #include "molecules.h"
vector<int>find_subset(int l, int r, vector<int>w) {
    vector<pair<int, int> >wr;
    for (int i = 0; i < w.size(); i++) {
        wr.push_back({w[i], i});
    }
    sort(wr.begin(), wr.end());
    long long pref[wr.size() + 1] = {};
    for (int i = 0; i < wr.size(); i++) {
        pref[i + 1] = pref[i] + wr[i].first;
    }
    int L = l, R = r;
    for (int i = 0; i < wr.size(); i++) {
        int l = i, r = wr.size() - 1;
        while (l < r) {
            int mid = (l + r) >> 1;
            if (pref[mid + 1] - pref[i] >= L) {
                r = mid;
            } else {
                l = mid + 1;
            }
        }
        // cout << i << ' ' << l << endl;
        if (pref[l + 1] - pref[i] >= L && pref[l + 1] - pref[i] <= R) {
            vector<int>ans;
            for (int j = i; j <= l; j++) {
                ans.push_back(wr[j].second);
            }
            return ans;
        }
    }
    return {};
}
// main() {
//     int n, l, u;
//     cin >> n >> l >> u;
//     vector<int>w(n);
//     for (int i = 0; i < n; i++) {
//         cin >> w[i];
//     }
//     auto x = find_subset(l, u, w);
//     for (auto y : x) {
//         cout << y << ' ';
//     }
// }

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