Submission #670038

#TimeUsernameProblemLanguageResultExecution timeMemory
670038illyakrDetecting Molecules (IOI16_molecules)C++14
100 / 100
92 ms18072 KiB
#include <bits/stdc++.h> #include "molecules.h" using namespace std; vector<int> find_subset(int l, int u, vector<int> w) { if (l > u)swap(l, u); vector<pair<int, int> > a; for (int i = 0; i < w.size(); i++) a.push_back({w[i], i}); sort(a.begin(), a.end(), [](pair<int, int> q, pair<int, int> w) { return q.first < w.first; }); long long n = w.size(); vector<int> res; multiset<pair<long long, long long> > inuse; multiset<pair<long long, long long> > store; long long sum = 0; for (long long i = 0; i < n; i++) { if (sum + a[i].first <= u) { inuse.insert(a[i]); sum += a[i].first; } else { store.insert(a[i]); } } while (true) { // cout << sum << " <<< " << endl; // cout << "inuse " << inuse.size() << endl; // for (auto [val, id] : inuse) // cout << val << " " << id << endl; // cout << "store " << store.size() << endl; // for (auto [val, id] : store) // cout << val << " " << id << endl; // cout << "-------------------------" << endl; if (l <= sum && sum <= u)break; if (store.empty() || inuse.empty())break; auto have = *inuse.begin(); auto can = *(--store.end()); if (have.first < can.first) { inuse.erase(inuse.begin()); sum -= have.first; store.erase(--store.end()); sum += can.first; inuse.insert(can); } else { break; } } if (l <= sum && sum <= u) { for (auto [val, id] : inuse) res.push_back(id); } return res; } /** 4 15 17 6 8 8 7 4 14 15 5 5 6 6 4 10 20 15 17 16 18 */

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:9:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for (int i = 0; i < w.size(); i++)
      |                     ~~^~~~~~~~~~
molecules.cpp:56:19: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   56 |         for (auto [val, id] : inuse)
      |                   ^
#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...