Submission #1291465

#TimeUsernameProblemLanguageResultExecution timeMemory
1291465hssaan_arifDetecting Molecules (IOI16_molecules)C++20
100 / 100
79 ms12928 KiB
#include <vector>
#include <set>
#include <algorithm>
#include "molecules.h"

using namespace std;

vector<int> find_subset(int l, int u, vector<int> w) {
    vector<pair<int, int>> v;
    for (int i = 0; i < w.size(); i++) v.push_back({w[i], i});
    
    sort(v.rbegin(), v.rend());
    
    long long sum = 0;
    int last = w.size() - 1;
    set<int> ans;
    
    for (int i = 0; i < v.size(); i++) {
        sum += v[i].first;
        ans.insert(v[i].second);
        
        if (sum >= l && sum <= u) 
            return vector<int>(ans.begin(), ans.end());
        
        if (sum > u) {
            int attempts = i + 1;
            while (attempts--) {
                sum -= v[i].first;
                ans.erase(v[i].second);
                sum += v[last].first;
                ans.insert(v[last].second);
                i--;
                last--;
                
                if (sum >= l && sum <= u) 
                    return vector<int>(ans.begin(), ans.end());
            }
            return vector<int>();
        }
    }
    return vector<int>();
}

Compilation message (stderr)

molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...