# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
789840 | Malix | Detecting Molecules (IOI16_molecules) | C++14 | 0 ms | 212 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
int arrSize = w.size();
int gap = u - l;
vector<int> answer;
vector<int> answertemp;
vector<int> temp = w;
int minval = minval;
sort(temp.begin(), temp.end());
vector<int> temp2 = temp;
if(arrSize == 1){
if(w[0]<=u && w[0]>=l){
answer.push_back(0);
return answer;
}
return std::vector<int>(0);
}
if(minval == temp[arrSize-1]){
int modval = u%w[0];
if(modval<=gap){
int termcount = (u-modval)/w[0];
if(arrSize>=termcount){
for(int i = 0; i < termcount; i++){
answer.push_back(i);
}
return answer;
}
}
return std::vector<int>(0);
}
if(temp[arrSize-1]-minval==1){
vector<vector<int> > elements(2);
for(int i = 0; i < arrSize; i++){
if(w[i]==minval){
elements[0].push_back(i);
}
else{
elements[1].push_back(i);
}
}
int right = 1;
int sum = minval;
answertemp.push_back(0);
while(sum<l){
sum += temp[right];
answertemp.push_back(right);
right++;
if(right >= arrSize){
return std::vector<int>(0);
}
}
while(!(sum>=l && sum<=u)){
sum -= minval;
answertemp.erase(answertemp.begin()+0);
sum += temp[right];
answertemp.push_back(right);
right++;
if(right >= arrSize){
return std::vector<int>(0);
}
}
int asize = answertemp.size();
vector<int> used;
int c1 = 0;
int c2 = 0;
for(int i = 0; i < asize; i++){
if(temp2[answertemp[i]]==minval){
answer.push_back(elements[0][c1]);
c1++;
}
else{
answer.push_back(elements[1][c2]);
c2++;
}
}
return answer;
}
/*
if(temp[arrSize-1] - minval == 1){
vector<int> smallarr;
vector<int> largearr;
int largeSize = 0;
for(int i = 0; i < arrSize; i++){
if(m[i]==temp[n-1]){
largearr.push_back(i);
largeSize++;
}
else{
smallarr.push_back(i);
smallSize++;
}
}
int mult = minval*temp[n-1];
int modval = u%mult;
int reps = u/mult;
int smallmod = modval%minval;
int largemod = modval%temp[arrSize-1];
int smalldiv = modval/minval;
int largediv = modval/temp[arrSize-1];
if(smallmod==0 && smalldiv>=smallSize){
smallSize -= smalldiv;
for(int i = 0; i < smalldiv; i++){
answer.push_back(smallarr[i]);
smallarr.erase(i);
smallSize--;
}
}
else if(largemod==0 && largediv>=largeSize){
largeSize -= largediv;
for(int i = 0; i < largediv; i++){
answer.push_back(largearr[i]);
largearr.erase(i);
}
}
}
*/
return std::vector<int>(0);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |