Submission #819472

#TimeUsernameProblemLanguageResultExecution timeMemory
819472GangstaDetecting Molecules (IOI16_molecules)C++14
100 / 100
44 ms5692 KiB
/*
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 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...