Submission #573832

#TimeUsernameProblemLanguageResultExecution timeMemory
573832MohamedFaresNebiliDetecting Molecules (IOI16_molecules)C++14
100 / 100
50 ms6188 KiB
#include <bits/stdc++.h> #include "molecules.h" #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; using ll = long long; using ii = pair<int, int>; using vi = vector<int>; #define pb push_back #define pp pop_back #define ff first #define ss second #define lb lower_bound typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; vector<int> find_subset(int l, int u, vector<int> w) { vector<ii> arr; int n = w.size(); vector<int> result; for(int l = 0; l < n; l++) arr.pb({w[l], l}); sort(arr.begin(), arr.end()); ll curr = 0, k = 0; for(int i = 0; i < n; i++) { if(curr + arr[i].ff <= u) { curr += arr[i].ff; result.pb(arr[i].ss); k++; } else break; } if(curr >= l && curr <= u) return result; for(int i = 0; i < k && n - i - 1 >= k; i++) { if(curr + arr[n - i - 1].ff - arr[i].ff <= u) { curr += arr[n - i - 1].ff - arr[i].ff; result[i] = arr[n - i - 1].ss; } else break; } if(curr < l || curr > u) result.clear(); return result; }
#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...