Submission #314237

#TimeUsernameProblemLanguageResultExecution timeMemory
314237Lemur95Detecting Molecules (IOI16_molecules)C++17
100 / 100
64 ms7788 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define x first
#define y second
#define ld long double
#define ll long long

using namespace std;

vector <int> find_subset(int l, int u, vector <int> w) {
  int n = w.size();
  vector <pair <int, int>> v;
  vector <ll> s(n + 1);
  vector <int> ans;
  for(int i = 0; i < n; i++)
    v.push_back({w[i], i});
  sort(v.begin(), v.end());
  for(int i = 0; i < n; i++)
    s[i + 1] = s[i] + v[i].first;
  for(int i = 1; i <= n; i++) {
    int j = lower_bound(s.begin(), s.begin() + i, s[i] - u) - s.begin();
    if(s[i] >= s[j] + l) {
      for(int k = j; k < i; k++)
        ans.push_back(v[k].second);
      break;
    }
  }
  return ans;
}

/*int main() {
  ios_base :: sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int n, l, u, x;
  vector <int> v;
  cin >> n >> l >> u;
  for(int i = 1; i <= n; i++)
    cin >> x, v.push_back(x);
  vector <int> ans = find_subset(l, u, v);
  int sum = 0;
  for(auto &i : ans)
    sum += v[i];
  if(sum == 0 || (l <= sum && sum <= u))
    cout << "Accepted!";
  else {
    cout << "Wrong answer, sum = " << sum << " and subset is ";
    for(auto &i : ans)
      cout << i << " ";
  }
  return 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...