Submission #369682

#TimeUsernameProblemLanguageResultExecution timeMemory
369682KoDDetecting Molecules (IOI16_molecules)C++17
100 / 100
65 ms4588 KiB
#include <bits/stdc++.h>
#include "molecules.h"

template <class T>
using Vec = std::vector<T>; 

Vec<int> find_subset(int l, int u, Vec<int> w) {
    const int n = (int) w.size();
    Vec<std::pair<int, int>> vec;
    vec.reserve(n);
    for (int i = 0; i < n; ++i) {
        vec.emplace_back(w[i], i);
    }
    std::sort(vec.begin(), vec.end());
    long long lsum = 0, rsum = 0;
    for (int k = 1; k <= n; ++k) {
        lsum += vec[k - 1].first;
        rsum += vec[n - k].first;
        if (lsum <= u && l <= rsum) {
            int last = k;
            long long cur = lsum;
            while (true) {
                if (l <= cur && cur <= u) {
                    Vec<int> ret;
                    for (int i = last - k; i < last; ++i) {
                        ret.push_back(vec[i].second);
                    }
                    return ret;
                }
                if (last == n) {
                    break;
                }
                cur -= vec[last - k].first;
                cur += vec[last].first;
                last += 1;
            }
        }
    }
    return {};
}
#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...