Submission #489024

#TimeUsernameProblemLanguageResultExecution timeMemory
4890241neDetecting Molecules (IOI16_molecules)C++14
Compilation error
0 ms0 KiB
#include "molecules.h"
#include<bits/stdc++.h>
using namespace std;
std::vector<int> find_subset(int l, int u, std::vector<int> arr) {
    int n = arr.size();    
    set<int>prev;
    vector<int>par(u+1,-1);
    prev.insert(0);
    int val = -1;
    for (int i = 0 ;i<n;++i){
    	set<int>nex;
    	for (auto x:prev){
    		if (x+arr[i]>u)break;
    		if (prev.find(x+arr[i]))continue;
    		nex.insert(x+arr[i]);
    		par[x+arr[i]]=i;
    		if (x+arr[i]>=l&&x+arr[i]<=u){
    			val = x+arr[i];
    			break;
    		}
    	}
    	if (val!=-1)break;
    	for (auto x:nex){
    		prev.insert(x);
    	}	
    }
    vector<int>ans;
    while(val>0){
    	ans.push_back(par[val]);
    	val-=arr[par[val]];
    }
    return ans;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:14:20: error: could not convert 'prev.std::set<int>::find((x + arr.std::vector<int>::operator[](((std::vector<int>::size_type)i))))' from 'std::set<int>::iterator' {aka 'std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::const_iterator'} to 'bool'
   14 |       if (prev.find(x+arr[i]))continue;
      |           ~~~~~~~~~^~~~~~~~~~
      |                    |
      |                    std::set<int>::iterator {aka std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::const_iterator}