제출 #778169

#제출 시각아이디문제언어결과실행 시간메모리
778169vjudge1Detecting Molecules (IOI16_molecules)C++17
0 / 100
1 ms212 KiB
//#pragma once #include <bits/stdc++.h> using namespace std; #define sp " " #define endl "\n" #define pb push_back #define pii pair<int, int> #define st first #define nd second #define ll long long vector<int> find_subset(int l, int u, vector<int> w){ vector<pii> v; int n = w.size(); vector<int> ans, vis(n, 0), zero; ll sum = 0; for (int i = 0; i < n; i++){ if (sum >= l && sum <= u) return ans; if (sum > u) break; ans.pb(i + 1); sum += w[i]; } if (sum >= l && sum <= u) return ans; return zero; ////////////////////////////////////////////// for (int i = 0; i < n; i++){ v.pb({w[i], i}); } sort(v.begin(), v.end()); int it = n - 1; while(sum <= u && it >= 0){ sum += v[it].st; vis[it] = 1; if (sum <= u && sum >= l){ for (int i = 0; i < n; i++){ if (vis[i]) ans.pb(v[i].nd + 1); } return ans; } it--; } return ans; //cout<<sum<<endl; int i = 0, j = n - 1; while(sum > u && i <= it && j > it){ vis[j] = 0, vis[i] = 1; sum += v[i].st - v[j].st; i++, j--; //cout<<sum<<endl; } if (sum <= u && sum >= l){ for (int i = 0; i < n; i++){ if (vis[i]) ans.pb(v[i].nd + 1); } } 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...