Submission #1001729

#TimeUsernameProblemLanguageResultExecution timeMemory
1001729vjudge1Detecting Molecules (IOI16_molecules)C++14
0 / 100
1 ms348 KiB
#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 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...