Submission #568114

#TimeUsernameProblemLanguageResultExecution timeMemory
568114hoanghq2004Detecting Molecules (IOI16_molecules)C++14
100 / 100
62 ms4800 KiB
#include <bits/stdc++.h> #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include "molecules.h" using namespace __gnu_pbds; using namespace std; template <typename T> using ordered_set = tree <T, null_type, less <T>, rb_tree_tag, tree_order_statistics_node_update>; vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); vector <int> p(n); for (int i = 0; i < n; ++i) p[i] = i; sort(p.begin(), p.end(), [&](int u, int v) { return w[u] < w[v]; }); long long sum = 0; vector <int> ans; for (int i = 0, j = 0; i < n; ++i) { sum += w[p[i]]; while (j <= i && sum > u) { sum -= w[p[j]]; ++j; } if (sum >= l) { for (int k = j; k <= i; ++k) ans.push_back(p[k]); return ans; } } return ans; } //int main() { // int n, l, u; // assert(3 == scanf("%d %d %d", &n, &l, &u)); // std::vector<int> w(n); // for (int i = 0; i < n; i++) // assert(1 == scanf("%d", &w[i])); // std::vector<int> result = find_subset(l, u, w); // // // printf("%d\n", (int)result.size()); // for (int i = 0; i < (int)result.size(); i++) // printf("%d%c", result[i], " \n"[i == (int)result.size() - 1]); //}

Compilation message (stderr)

molecules.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    2 | #pragma GCC optimization ("O3")
      | 
molecules.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization ("unroll-loops")
      |
#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...