This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/*
ID: didarco1
LANG: C++17
TASK:
*/
// a >> b = a / pow(2,b)
// a << b = a * pow(2,b)
#include <bits/stdc++.h>
#define ll long long int
#define pb push_back
#define sz size()
#define ss second
#define ff first
#define N 200001
#define pii pair<int,int>
using namespace std;
//ll _, x, n;
vector<int> find_subset(int l, int u, vector<int> w){
vector<int> result;
vector<pii> a;
int n = w.sz, l1 = 0, r1 = 0;
bool tr = 0;
ll sum = 0;
a.pb({0,0});
for(int i = 0; i < n; i++) a.pb({w[i],i});
sort(a.begin(), a.end());
// cout << l1 << ' ' << r1 << ' ' << sum << ' ' << a[l1].ff << ' ' << a[r1].ff << '\n';
while(l1 <= n or r1 <= n){
if(r1 == n and sum < l) break;
if(l1 == r1 and sum > u){
sum -= a[l1].ff;
l1++;
r1++;
sum += a[r1].ff;
continue;
}
if(sum < l and r1 < n) r1++, sum += a[r1].ff;
else if(sum > u and l1 < n){
sum -= a[l1].ff;
l1++;
}
else if(sum >= l and sum <= u){
tr = 1;
break;
}
}
if(tr){
if(l1 == 0) l1++;
// cout << l1 << ' ' << r1 << '\n';
for(int i = l1; i <= r1; i++) result.pb(a[i].ss);
sort(result.begin(), result.end());
}
return result;
}
//int main(){
// int l, u, n;
// cin >> n >> l >> u;
// vector <int> w;
// w.resize(n);
// for(int i = 0; i < n; i++){
// cin >> w[i];
// }
// for(auto i : find_subset(l,u,w)) cout << 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... |