제출 #366741

#제출 시각아이디문제언어결과실행 시간메모리
366741BartolMDetecting Molecules (IOI16_molecules)C++17
0 / 100
1 ms384 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; #define X first #define Y second #define mp make_pair #define pb push_back typedef long long ll; typedef pair <int, int> pii; typedef pair <int, pii> pip; typedef pair <pii, int> ppi; typedef pair <ll, ll> pll; const int INF=0x3f3f3f3f; const int N=10003; const int MAX=5e5+2; int n; vector <pii> v; vector <int> sol; multiset <int> MS; vector<int> find_subset(int l, int u, vector<int> w) { n=w.size(); for (int i=0; i<n; ++i) { if (w[i]<l) v.pb(mp(w[i], i)); else if (w[i]<=u) { sol.pb(i); return sol; } } sort(v.begin(), v.end()); n=v.size(); ll mini=0, maxi=0; int siz=0; for (int i=1; i<=n; ++i) { mini+=v[i-1].X; maxi+=v[n-i].X; if (mini>u) return sol; if (mini<=l && maxi>=l) { siz=i; break; } } ll sum=0; for (int i=0; i<siz; ++i) sum+=v[i].X; for (int i=siz; i<n; ++i) { if (sum>u) return sol; if (sum>=l && sum<=u) { for (int j=i-siz; j<i; ++j) sol.pb(v[j].Y); return sol; } sum+=v[i].X; sum-=v[i-siz].X; } return sol; }
#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...