이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
sort(temp.begin(), temp.end());
if(arrSize == 1){
if(w[0]<=u && w[0]>=l){
answer.push_back(0);
return answer;
}
return std::vector<int>(0);
}
if(temp[0] == 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]-temp[0]==1){
vector<vector<int> > elements(2);
for(int i = 0; i < arrSize; i++){
if(w[i]==temp[0]){
elements[0].push_back(i);
}
else{
elements[1].push_back(i);
}
}
int right = 1;
int sum = temp[0];
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 -= temp[0];
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(answertemp[i]==temp[0]){
answer.push_back(elements[0][c1]);
c1++;
}
else{
answer.push_back(elements[1][c2]);
c2++;
}
}
return answer;
}
/*
if(temp[arrSize-1] - temp[0] == 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 = temp[0]*temp[n-1];
int modval = u%mult;
int reps = u/mult;
int smallmod = modval%temp[0];
int largemod = modval%temp[arrSize-1];
int smalldiv = modval/temp[0];
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);
}
# | 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... |