Submission #1115291

#TimeUsernameProblemLanguageResultExecution timeMemory
1115291ZflopDetecting Molecules (IOI16_molecules)C++14
69 / 100
75 ms15728 KiB
#pragma once #include <bits/stdc++.h> #include <vector> using namespace std; const int NMAX = (int)1e3 * 2; std::vector<int> find_subset(int l, int u, std::vector<int> w) { vector<pair<int,int>>p; for (int i = 0; i < w.size();++i) p.push_back({w[i],i}); sort(p.begin(),p.end()); set<pair<int,int>>m; vector<int>v1; int s = 0; int i = w.size() - 1; for (; i >= 0 && s <= u;--i) { if (s >= l && s <= u) return v1; m.insert(p[i]); v1.push_back(p[i].second); s += p[i].first; } if (s < l) return {}; if (s <= u && s >= l) return v1; while (i >= 0) { auto a = *--m.end(); s -= a.first; s += p[i].first; m.erase(a); m.insert(p[i]); if (s <= u && s >= l) { vector<int>v; while (m.size()) { auto b = *m.begin(); v.push_back(b.second); m.erase(b); } return v; } --i; } for (auto& x : m) { int sum = s - x.first; if (sum <= u && sum >= l) { m.erase(x); s = sum; break; } } vector<int>ceva; while (m.size()) { auto g = *m.begin(); ceva.push_back(g.second); m.erase(m.begin()); } if (s >= l && s <= u) return ceva; return {}; }

Compilation message (stderr)

molecules.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
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)
      |                     ~~^~~~~~~~~~
#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...