Submission #1266610

#TimeUsernameProblemLanguageResultExecution timeMemory
1266610thewizardmanDetecting Molecules (IOI16_molecules)C++20
100 / 100
35 ms5192 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;

ll n, mn, mx;
vector<pll> v;
vector<int> ans;

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
  n = w.size();
  v.resize(n);
  for (int i = 0; i < n; i++) v[i] = {w[i], i};
  sort(v.begin(), v.end());
  for (int i = 0; i < n; i++) {
    mn += v[i].first;
    mx += v[n-i-1].first;
    if (mn <= u && mx >= l) {
      for (int j = 0; j <= i; j++) ans.push_back(j);
      int k = i;
      while (mn < l) {
        while (ans[k] == n-1 || ans[k] == ans[k+1] - 1) k--;
        mn -= v[ans[k]].first;
        if (k == ans.size()-1) ans[k] = n-1;
        else ans[k] = ans[k+1]-1;
        mn += v[ans[k]].first;
      }
      break;
    }
  }
  for (auto &e: ans) e = v[e].second;
  return ans;
}

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