Submission #1287534

#TimeUsernameProblemLanguageResultExecution timeMemory
1287534kutomei3Detecting Molecules (IOI16_molecules)C++20
100 / 100
34 ms4128 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> find_subset(int l, int u, vector<int> w) {
    vector<pair<int, int>> wi;
    int n = w.size();

    for (int i = 0; i < n; i++) {
        wi.push_back({w[i], i});
    }
    sort(wi.rbegin(), wi.rend());

    long long sum = 0, r = -1;
    for (int i = 0; i < n; i++) {
        sum += wi[i].first;
        if (sum > u) {
            r = i;
            break;
        }
        if (sum >= l && sum <= u) {
            vector<int> ans;
            for (int j = 0; j <= i; j++) {
                ans.push_back(wi[j].second);
            }
            sort(ans.begin(), ans.end());
            return ans;
        }
    }

    // cout << sum << '\n';

    int lu = n - 1;
    while (sum > u) {
        sum += wi[lu--].first - wi[r--].first;
        if (r == -1) break;
    }

    // cout << sum << '\n';

    vector<int> ans;
    for (int i = 0; i <= r; i++) {
        ans.push_back(wi[i].second);
    }
    for (int i = w.size() - 1; i > lu; i--) {
        ans.push_back(wi[i].second);
    }

    sort(ans.begin(), ans.end());
    
    if (sum >= l && sum <= u) return ans;
    else return {};
}

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...