Submission #1334107

#TimeUsernameProblemLanguageResultExecution timeMemory
1334107DeltaStructDetecting Molecules (IOI16_molecules)C++20
100 / 100
36 ms4892 KiB
#include <bits/stdc++.h>
using namespace std;
#include "molecules.h"

vector<int> find_subset(int l,int r,vector<int> A){
  int n = A.size();
  vector<int> I(n); iota(I.begin(),I.end(),0);
  sort(I.begin(),I.end(),[&](int x,int y){ return A[x]<A[y]; });
  vector<long long> B(1); for (int a:I) B.emplace_back(B.back()+A[a]);
  if (B.back()<l) return {};
  if (l<=B.back()&&B.back()<=r){
    vector<int> R(n); iota(R.begin(),R.end(),0);
    return R;
  }
  for (int i(0);i < n;++i){
    int x = lower_bound(B.begin(),B.end(),B.back()-r+B[i])-B.begin();
    if (x==B.size()) continue;
    if (B.back()-B[x]+B[i]>=l){
      vector<int> R;
      for (int k(0);k < i;++k) R.emplace_back(I[k]);
      for (int k(x);k < n;++k) R.emplace_back(I[k]);
      return R;
    }
  }
  return {};
}
#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...