Submission #957139

#TimeUsernameProblemLanguageResultExecution timeMemory
957139vjudge1Detecting Molecules (IOI16_molecules)C++17
69 / 100
35 ms4408 KiB
#include <bits/stdc++.h> using namespace std; vector <int> find_subset(int l,int u,vector<int> a){ vector <pair<int,int>> w; int n=(int)a.size(); vector<int> ans; int sum=0; int r=0; for(int i=0;i<n;i++)w.push_back({a[i],i}); sort(w.begin(),w.end()); for(int i=0;i<n;i++){ while(sum<l && r<n){ sum+=w[r].first; r++; } if(l<=sum && sum<=u && w[r-1].first-w[i].first<=u-l ){ for(int j=i;j<r;j++){ ans.push_back(w[j].second); } return ans; } sum-=w[i].first; } return {}; } /* ---------------------------------------------------go get gold--------------------------------------------------------------------- - If u see the problem dp there's many option to iterate, u can iterate from 1- n or 1 - (possible max number) - If u see the problem that has unexpected constraint u can divide it into 2 problem - If u see the problem that can use binary search, then u can use binser + check condition - in interactive problem there's many trick using binser - kalo misal mau cari yang sama pake pernah ke visit ga bilangan itu - kalo problem yang high itu biasanya optimisasi nya pake 2 array - dp bisa aja kek kamu tenzing balls dimana optimisasi 2 dp - janlup fibonacci - kalo binser mending r = 3 * 1e18 aja - kalo mau dibalik itu pake value nya tinggal diubah ke size */
#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...