Submission #125812

#TimeUsernameProblemLanguageResultExecution timeMemory
125812SortingDetecting Molecules (IOI16_molecules)C++14
100 / 100
69 ms8804 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2e5 + 7; long long prefix[N], suffix[N]; long long find_sum(int l, int r){ if(l == 0){ return prefix[r]; } return prefix[r] - prefix[l - 1]; } vector<int> find_subset(int l, int r, vector<int> w){ vector<int> ans; int n = (int)w.size(); vector<pair<long long, int> > a; for(int i = 0; i < n; i++){ a.push_back({w[i], i}); } sort(a.begin(), a.end()); prefix[0] = a[0].first; for(int i = 1; i < n; i++){ prefix[i] = prefix[i - 1] + (long long)a[i].first; } for(int i = 1; i <= n; i++){ if(find_sum(0, i - 1) > r || find_sum(n - i, n - 1) < l){ continue; } for(int j = 0; j <= n - i; j++){ long long sum = find_sum(j, j + i - 1); if(l <= sum && sum <= r){ for(int k = 0; k < i; k++){ ans.push_back(a[j + k].second); } return ans; } } while(true); } 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...