Submission #1106437

#TimeUsernameProblemLanguageResultExecution timeMemory
1106437SonicMLDetecting Molecules (IOI16_molecules)C++14
100 / 100
42 ms5712 KiB
#include <vector>
#include <algorithm>

#include "molecules.h"

using namespace std;

int const NMAX = 2e5;
int arr[1 + NMAX];
int ind[1 + NMAX];

bool compareIndex(int a, int b) {
  return (arr[a] < arr[b]);
}

vector <int> find_subset(int l, int u, vector<int> w) {
  vector <int> result;
  int n = w.size();
  for(int i = 0;i < w.size();i++) {
    ind[i] = i;
    arr[i] = w[i];
  }
  sort(ind, ind+n, compareIndex);
  int from = 0;
  long long sum = 0;
  bool foundSol = false;
  for(int to = 0;to < n && !foundSol;to++) {
    sum += arr[ind[to]]; 
    while(sum > u) {
      sum -= arr[ind[from]];
      from++;
    }
    if(l <= sum && sum <= u) {
      foundSol = true;
      for(int i = from;i <= to;i++) {
	result.push_back(ind[i]);
      }
    }
  }
  return result;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:19:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |   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...