Submission #344810

#TimeUsernameProblemLanguageResultExecution timeMemory
344810ogibogi2004Detecting Molecules (IOI16_molecules)C++14
0 / 100
1 ms492 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector<int> find_subset(int l, int u, vector<int> w) {
    ll t=0;
    vector<pair<ll,ll> >da;
    
    for(int i=0;i<w.size();i++)
    {
		da.push_back({w[i],i});
    }
    sort(da.begin(),da.end());
    ll j=-1;
    for(ll i=0;i<da.size();i++)
    {
		t+=da[i].first;
		if(t>u)break;
		j=i;
	}
    if(j==-1)return vector<int>(0);
    t=0;
    for(ll i=0;i<=j;i++)
    {
		t+=da[i].first;
	}
	ll f=0;
	for(int i=da.size()-1;i>=da.size()-j-1;i--)
	{
		f+=da[i].first;
	}
	if(t>u||f<l)
	{
		return vector<int>(0);
	}
	set<int>ivan;
	set<int>not_taken;
	for(ll i=0;i<=j;i++)ivan.insert(i);
	for(ll i=j+1;i<da.size();i++)not_taken.insert(i);
	while(t<l)
	{
		ll i1=(*ivan.begin());
		ll i2=(*not_taken.rbegin());
		ivan.erase(i1);
		not_taken.insert(i1);
		ivan.insert(i2);
		not_taken.erase(i2);
		t+=da[i2].first-da[i1].first;
	}
	vector<int>ret;
	for(auto of:ivan)
	{
		ret.push_back(da[of].second);
	}
	sort(ret.begin(),ret.end());
	return ret;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:9:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for(int i=0;i<w.size();i++)
      |                 ~^~~~~~~~~
molecules.cpp:15:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(ll i=0;i<da.size();i++)
      |                ~^~~~~~~~~~
molecules.cpp:28:25: warning: comparison of integer expressions of different signedness: 'int' and 'long long unsigned int' [-Wsign-compare]
   28 |  for(int i=da.size()-1;i>=da.size()-j-1;i--)
      |                        ~^~~~~~~~~~~~~~~
molecules.cpp:39:16: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |  for(ll i=j+1;i<da.size();i++)not_taken.insert(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...