이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define ff first
#define ss second
#define cont continue;
#define sz size()
#define pb push_back
using namespace std;
typedef long long ll;
const int N = 300005;
// a1 a2 tapmaly
ll n, ans, p[N], a1, a2, l1, r1, md, hp, slm;
vector <int> q;
vector <pair <ll, ll> > v;
vector <int> find_subset(int l, int u, vector <int> w) {
n = w.sz;
a1 = 2*n;
for (int i = 0; i < n; ++i) {
v.pb ({w[i], i});
}
sort (v.begin (), v.end());
p[0] = v[0].ff;
for (int i = 1; i < n; ++i) {
p[i] = p[i - 1] + v[i].ff;
}
for (int i = 0; i < n; ++i) {
l1 = i;
r1 = n-1;
while (l1 <= r1) {
md = (l1 + r1) / 2;
if (!i) hp = p[md];
else hp = p[md] - p[i - 1];
if (hp > u) r1 = md - 1;
else if (hp < l) l1 = md + 1;
else{
a1 = i;
a2 = md;
slm = 1;
break;
}
}
if (slm) break;
}
for (int i = a1; i <= a2; ++i) q.pb (v[i].ss);
sort(q.begin(), q.end());
return q;
}
/*
int main () {
vector <int> a = {6, 8, 8, 7};
for (int i = 0; i < find_subset(15, 17, a).size(); i++){
cout << find_subset(15, 17, a)[i] << " ";
}
}
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |