Submission #1283579

#TimeUsernameProblemLanguageResultExecution timeMemory
1283579JohannDetecting Molecules (IOI16_molecules)C++20
100 / 100
36 ms6172 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pii; typedef vector<bool> vb; typedef vector<int> vi; typedef vector<pii> vpii; typedef vector<vpii> vvpii; typedef vector<vi> vvi; typedef tuple<int, int, int> tiii; typedef vector<tiii> vtiii; #define sz(x) ((int)(x).size()) #define all(x) begin(x), end(x) std::vector<int> find_subset(int l, int u, std::vector<int> w) { vpii W; int n = sz(w); for (int i = 0; i < n; ++i) { if (w[i] > u) continue; if (w[i] >= l) { return {i}; } W.push_back(make_pair(w[i], i)); } sort(all(W)); n = sz(W); int idxl = 0, idxr = n - 1; // both indeces are exclusive ll sum = 0; while (sum < l && idxl < n) sum += W[idxl++].first; bool cont = true; while (cont) { cont = false; if (sum < l) { if (idxr >= idxl) sum += W[idxr--].first, cont = true; } else if (sum > u) { if (idxl > 0) sum -= W[--idxl].first, cont = true; } else { vector<int> ans; for (int i = 0; i < idxl; ++i) ans.push_back(W[i].second); for (int i = n - 1; i > idxr; --i) ans.push_back(W[i].second); return ans; } } return std::vector<int>(0); }

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