제출 #428560

#제출 시각아이디문제언어결과실행 시간메모리
428560dreezyDetecting Molecules (IOI16_molecules)C++17
46 / 100
114 ms708 KiB
#include <bits/stdc++.h> #include "molecules.h" using namespace std; #define pb push_back #define pi pair<int,int> #define ll long long #define mp make_pair vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); vector<pi> sorted(n); for(int i =0;i<n ; i++) sorted[i] = {w[i], i}; sort(sorted.begin(), sorted.end()); int lpntr = -1, rpntr = -1; for(int k = 0; k< n; k++){ ll curans = 0; int left = 0; int right = left + k; for(int i =left; i <= right; i++) curans+=sorted[i].first; if(curans >=l and curans <= u){ lpntr = left; rpntr = right; break; } bool won = false; while(curans <l){ curans -= sorted[left++].first; curans += sorted[++right].first; //cout << left <<", "<<right<<endl; if(curans >= l and curans <= u) { won = true; break; } else if(curans >= u || right == n-1) { won = false; break; } } if(won){ lpntr = left; rpntr = right; break; } } if(lpntr == -1 and rpntr == -1) return vector<int> (); vector<int> ans; for(int i = max(0,lpntr); i<= min(n -1, rpntr); i++) ans.pb(sorted[i].second); sort(ans.begin(), ans.end()); return ans; } /***************/
#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...