Submission #1351895

#TimeUsernameProblemLanguageResultExecution timeMemory
1351895bbbirosDetecting Molecules (IOI16_molecules)C++20
19 / 100
1095 ms636 KiB
#include "molecules.h"
#include <map>
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
map<int, int> m;
vector<int> find_subset(int l, int u, vector<int> w)
{
    m[0] = -1;
    queue<int> q;
    q.push(0);
    int ans = 0;
    while (q.size())
    {
        int c = q.front();
        //cout << c << endl;
        q.pop();
        if (c >= l)
        {
            ans = c;
            break;
        }
        for (int i = m[c] + 1; i < w.size(); i++)
        {
            if (c + w[i] > u)
                continue;
            if (m.count(c + w[i])&&m[c+w[i]]<i)
                continue;
            m[c + w[i]] = i;
            q.push(c + w[i]);
        }
    }
    if (ans == 0)
        return {};
    vector<int> ansv;
    while (ans > 0)
    {
        ansv.push_back(m[ans]);
        ans -= w[ansv.back()];
    }
    reverse(ansv.begin(),ansv.end());
    return ansv;
}
#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...