제출 #242746

#제출 시각아이디문제언어결과실행 시간메모리
242746Coroian_DavidDetecting Molecules (IOI16_molecules)C++11
100 / 100
71 ms5740 KiB
#include <bits/stdc++.h> #include "molecules.h" #define xx first #define yy second using namespace std; typedef long long lint; vector <int> rez; vector <pair<int, int>> v; int n; int st, dr; void getRez() { sort(v.begin(), v.end()); lint sum = 0; if(v[0].xx > dr) return; for(auto u : v) sum += u.xx; if(sum < st) return; sum = 0; int cr = 0; while(cr < n && sum + v[cr].xx < st) { sum += v[cr].xx; cr ++; } cr --; if(sum + v[cr + 1].xx >= st && sum + v[cr + 1].xx <= dr) { for(int i = 0; i <= cr + 1; i ++) rez.push_back(v[i].yy); return; } int j = n - 1; for(int i = 0; i <= cr && i < j; i ++, j --) { sum -= v[i].xx; sum += v[j].xx; if(sum >= st && sum <= dr) { for(int x = i + 1; x <= cr; x ++) rez.push_back(v[x].yy); for(int x = n - 1; x >= j; x --) rez.push_back(v[x].yy); return; } } return; } vector <int> find_subset(int l, int u, vector<int> w) { st = l; dr = u; n = w.size(); for(int i = 0; i < n; i ++) v.push_back({w[i], i}); getRez(); return rez; }
#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...