이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
#define ins insert
#define pb push_back
#define pii pair<int, int>
#define endl '\n'
#define drop(x) cout<<(x)<<endl; return;
#define all(x) x.begin(),x.end()
vector<int> find_subset(int l, int u, vector<int> arr) {
int n = arr.size();
vector<int> parent(n,-1);
int ansp = -1;
vector<int> ans;
vector<int> temp=arr;
sort(all(arr));
swap(l,u);
set<pair<int,int>> var;
for(int i=0;i<n;i++){
// cout<<arr[i]<<endl;
if(arr[i]>l){
continue;
}
if(arr[i]>=u){
ans.pb(i);
return ans;
}
int x = l-arr[i];
auto it = var.upper_bound({x,-1});
// cout<<arr[i]<<" ucun it search"<<endl;
if(it!=var.begin()){
--it;
// cout<<arr[i]<<" buldum "<<(*it).second<<endl;
int sumnow = arr[i]+ (*it).first;
cout<<sumnow<<endl;
parent[i]=(*it).second;
var.ins({sumnow,i});
if(sumnow>=u && sumnow<=l){
ansp=i;
// cout<<ansp<<endl;
break;
}
}
var.ins({arr[i],i});
// cout<<arr[i]<<" insertledim"<<endl;
}
while(ansp!=-1){
ans.pb(ansp);
ansp= parent[ansp];
}
// reverse(all(ans));
map<int,int> need;
vector<int> ans2;
int s=0;
for(auto v:ans){
s+=arr[v];
need[arr[v]]++;
// cout<<v<<endl;
if(s>=u && s<=l){
break;
}
}
for(int i=0;i<n;i++){
if(need[temp[i]]){
ans2.pb(i);
need[temp[i]]--;
}
}
return ans2;
}
# | 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... |