| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 74654 | kjain_1810 | Detecting Molecules (IOI16_molecules) | C++17 | 80 ms | 15088 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "molecules.h"
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
using namespace std;
typedef long long ll;
vector< pair<ll, ll> >vec;
ll u, l;
std::vector<int> find_subset(int L, int U, std::vector<int> w) {
    for(ll a=0; a<w.size(); a++)
    	vec.pb({w[a], a});
    sort(vec.begin(), vec.end());
    ll ptrf=0, sum=0, u=U, l=L, ptrb=0;
    bool flag=false;
    while(ptrf<vec.size())
    {
    	while(ptrf<vec.size() && sum<l)
    	{
    		sum+=vec[ptrf].f;
    		ptrf++;
    	}
    	if(sum<=u && sum>=l)
    	{
    		vector<int>ret;
    		ret.clear();
    		for(int a=ptrb; a<ptrf; a++)
    			ret.pb(vec[a].s);
    		return ret;
    	}
    	while(ptrb<ptrf && sum>u)
    	{
    		sum-=vec[ptrb].f;
    		ptrb++;
    	}
    	if(sum<=u && sum>=l)
    	{
    		vector<int>ret;
    		ret.clear();
    		for(int a=ptrb; a<ptrf; a++)
    			ret.pb(vec[a].s);
    		return ret;
    	}
    }
    int x=0;
    for(int a=vec.size()-1; a>=0; a--)
    {
    	x+=vec[a].f;
    	if(sum<=u && sum>=l)
    	{
    		vector<int>ret;
    		ret.clear();
    		for(; a<vec.size(); a++)
    			ret.pb(vec[a].s);
    		return ret;
    	}
    }
    x=0;
    for(int a=0; a<vec.size(); a--)
    {
    	x+=vec[a].f;
    	if(sum<=u && sum>=l)
    	{
    		vector<int>ret;
    		ret.clear();
    		for(; a>=0; a--)
    			ret.pb(vec[a].s);
    		return ret;
    	}
    }
    vector<int>ret;
    ret.clear();
    return ret;
    // for(ll a=1; a<vec.size(); a++)
    // {
    // 	if(sum<=u && sum>=l)
    // 	{
    // 		flag=true;
    // 		ptr2=a;
    // 		break;
    // 	}
    // 	sum+=vec[a].f;
    // 	if(sum<=u && sum>=l)
    // 	{
    // 		flag=true;
    // 		ptr2=a+1;
    // 		break;
    // 	}
    // 	while(sum>u)
    // 	{
    // 		sum-=vec[ptr].f;
    // 		ptr++;
    // 	}
    // }
    // if(!flag)
    // {
    // 	vector<int>yo;
    // 	yo.clear();
    // 	return yo;
    // }
    // vector<int>yo;
    // for(ll b=ptr; b<ptr2; b++)
    // {
    // 	yo.pb(w[vec[b].s]);
    // }
    // return yo;
}
Compilation message (stderr)
| # | 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... | ||||
