| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 474466 | Gumloihacknao | Detecting Molecules (IOI16_molecules) | C++14 | 0 ms | 0 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 <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
int n, l, u, m, sum;
bool result = false;
vector<int> a,d,c,e;
void nhap()
{
	ifstream f;
	f.open("2016.inp");
	
	f >> n >> l >> u;
	
	for ( int i = 0; i < n; i++)
	{
		f >> m;
		sum += m;
  		a.push_back(m);
	}
	
	f.close();
}
void xl()
{
	for(int i = 0; i <= sum; i++)
	{
 		d.push_back(0);
 		c.push_back(0);
    }
    d[0] = 1;
    for (int i = 0; i < n; i++)
    {
    	for (int j = sum; j >= a[i]; j--)
    	{
    		if (d[j] == 0 && d[j-a[i]] == 1)
    		{
    			d[j] = 1;
    			c[j] = i;
			}
		}
	}
}
void xuat()
{
	int m = 0;
	ofstream f;
	f.open("2016.out");
	for ( int i = l; i <= u; i++)
	{
		if (d[i] == 1)
		result = true;
		{
			m = i;
			while ( m - a[c[m]] >= 0)
			{
				e.push_back(c[m]);
				m -= a[c[m]];
			}
			break;
		}
	}
	if (result)
	{
		for ( int i = 0; i < e.size(); i++)
		{
			f << e[i] << " ";
		}
	}
	else
	{
		f << 0;
	}
	f.close();
}
int main()
{	
	nhap();
	xl();
	xuat();
	return 0;
}
