Submission #792579

#TimeUsernameProblemLanguageResultExecution timeMemory
792579becaidoDetecting Molecules (IOI16_molecules)C++17
100 / 100
43 ms4796 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx,popcnt,sse4,abm") #include <bits/stdc++.h> using namespace std; #ifndef WAIMAI #include "molecules.h" #endif #ifdef WAIMAI #define debug(HEHE...) cout << "[" << #HEHE << "] : ", dout(HEHE) void dout() {cout << '\n';} template<typename T, typename...U> void dout (T t, U...u) {cout << t << (sizeof... (u) ? ", " : ""), dout (u...);} #else #define debug(...) 7122 #endif #define ll long long #define Waimai ios::sync_with_stdio(false), cin.tie(0) #define FOR(x,a,b) for (int x = a, I = b; x <= I; x++) #define pb emplace_back #define F first #define S second const int SIZE = 2e5 + 5; int id[SIZE]; vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); iota(id + 1, id + n + 1, 0); sort(id + 1, id + n + 1, [&](int l, int r) { return w[l] < w[r]; }); ll sum = 0; for (int i = 1, lp = 1; i <= n; i++) { sum += w[id[i]]; while (lp <= n && sum > u) { sum -= w[id[lp]]; lp++; } if (l <= sum) { vector<int> ans; FOR (j, lp, i) ans.pb(id[j]); return ans; } } return vector<int>(); } /* in1 4 15 17 6 8 8 7 out1 2 2 1 in2 4 14 15 5 5 6 6 out2 0 in3 4 10 20 15 17 16 18 out3 1 3 */ #ifdef WAIMAI int main() { int n, l, u; assert(3 == scanf("%d %d %d", &n, &l, &u)); vector<int> w(n); for (int i = 0; i < n; i++) assert(1 == scanf("%d", &w[i])); 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]); } #endif
#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...