Submission #775602

#TimeUsernameProblemLanguageResultExecution timeMemory
775602LudisseyDetecting Molecules (IOI16_molecules)C++14
100 / 100
37 ms7144 KiB
#include "molecules.h" #include <iostream> #include <string> #include <set> #include <map> #include <cstring> #include <unordered_map> #include <vector> #include <fstream> #include <bitset> #include <tuple> #include <cmath> #include <cstdint> #include <stack> #include <cassert> #include <cstdio> #include <queue> #include <iterator> #include <iomanip> #include <algorithm> #include <sstream> using namespace std; int l, u; vector<pair<int, int>> w_sort; vector<int> out; std::vector<int> find_subset(signed _l, signed _u, std::vector<int> w) { l = _l; u = _u; int n = w.size(); w_sort.resize(n); vector<long long> prefx(n + 1); for (int i = 0; i < n; i++) w_sort[i] = { w[i],i }; sort(w_sort.begin(), w_sort.end()); for (int i = 1; i <= n; i++) { prefx[i] = prefx[i - 1] + w_sort[i - 1].first; } int i = 0, j = 0; bool res=false; while (i <= j && j < n) { long long sum = prefx[j + 1] - prefx[i]; if (sum >= l && sum <= u) { res = true; break; } else if (sum < l) { j++; if (j >= n) break; } else { if (i == j) j++; if (j >= n) break; i++; } } if (res) { for (int v = i; v <= j; v++) out.push_back(w_sort[v].second); return out; } return std::vector<int>(0); }
#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...