Submission #265589

#TimeUsernameProblemLanguageResultExecution timeMemory
265589cjoaDetecting Molecules (IOI16_molecules)C++11
19 / 100
1 ms512 KiB
#include "molecules.h"

#include <iostream>
#include <vector>
#include <map>
#include <cassert>

using namespace std;

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
   const int N = w.size();

   map< int,vector<int> > MAP;
   for (int i = 0; i < N; ++i)
      MAP[ w[i] ].push_back(i);

   assert(MAP.size() <= 2);

   int N1 = MAP.begin()->second.size();
   int W1 = MAP.begin()->first;
   int N2 = MAP.size() == 1 ? 0 : MAP.rbegin()->second.size();
   int W2 = MAP.size() == 1 ? 0 : MAP.rbegin()->first;

   for (int n1 = 0; n1 <= N1; ++n1) {
      for (int n2 = 0; n2 <= N2; ++n2) {
         long long sum = n1 * W1 + n2 * W2;
         if (l <= sum && sum <= u) {
            vector<int> res;
            for (int i = 0; i < n1; ++i)
               res.push_back( MAP[W1][i] );
            for (int i = 0; i < n2; ++i)
               res.push_back( MAP[W2][i] );
            return res;
         }
      }
   }

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