| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1138152 | Aliyyiakbar | Detecting Molecules (IOI16_molecules) | C++20 | 0 ms | 324 KiB | 
#include "molecules.h"
#include "bits/stdc++.h"
using namespace std;
vector<int> find_subset(int l, int r, vector<int> w)
{
    int n = w.size();
    int sum = accumulate(w.begin(), w.end(), 0LL);
    vector<vector<bool>> dp(n + 1, vector<bool>(sum + 1, false));
    for (int i = 0; i <= n; i++)
    {
        dp[i][0] = true;
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= sum; j++)
        {
            if (j < w[i-1])
            {
                dp[i][j] = dp[i-1][j];
            }
            else
            {
                dp[i][j] = dp[i-1][j] || dp[i-1][j-w[i-1]];
            }
        }
    }
    vector<int>indicies;
    for (int sm = l; sm <= r; ++sm)
    {
        if (dp[n][sm])
        {
            int d = sm;
            for (int i = 1; i <= n; ++i)
            {
                if (dp[i-1][d-w[i-1]])
                {
                    indicies.push_back(i);
                    d -= w[i-1];
                    if (d == 0)
                    {
                        break;
                    }
                }
            }
        }
    }
    return indicies;
}
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... | ||||
