Submission #434429

#TimeUsernameProblemLanguageResultExecution timeMemory
434429vanicDetecting Molecules (IOI16_molecules)C++14
100 / 100
74 ms3564 KiB
#include "molecules.h"
#include <vector>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int maxn=2e5+5;
typedef long long ll;

int n;
vector < int > v;
vector < int > sol;
int pos[maxn];

bool cmp(int a, int b){
	return v[a]<v[b];
}

vector < int > find_subset(int l, int u, vector < int > w) {
	v=w;
	n=v.size();
	for(int i=0; i<n; i++){
		pos[i]=i;
	}
	sort(pos, pos+n, cmp);
	ll sum=0;
	int ind;
	for(int i=0; i<n; i++){
		ind=i;
		sum+=v[pos[i]];
		if(sum>l){
			break;
		}
	}
	if(sum<l){
		return sol;
	}
	if(sum>u){
		sum-=v[pos[ind]];
		if(!sum){
			return sol;
		}
	}
	else{
		ind++;
	}
	int ind2=0;
	while(ind<n && sum<l){
		sum+=v[pos[ind]]-v[pos[ind2]];
		ind2++;
		ind++;
	}
//	cout << ind2 << ' ' << ind << endl;
	if(sum<l){
		return sol;
	}
	for(int i=ind2; i<ind; i++){
		sol.push_back(pos[i]);
	}
	return sol;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:30:6: warning: 'ind' may be used uninitialized in this function [-Wmaybe-uninitialized]
   30 |  int ind;
      |      ^~~
#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...