Submission #1312992

#TimeUsernameProblemLanguageResultExecution timeMemory
1312992shirokitoDetecting Molecules (IOI16_molecules)C++20
100 / 100
40 ms6676 KiB
#include <bits/stdc++.h>
using namespace std;

#define all(a) (a).begin(), (a).end()
#define fi first
#define se second

using ll = long long;

const int N = 5e5 + 5;

ll pref[N];

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

    vector<pair<ll, ll>> v;

    for (int i = 0; i < n; i++) v.push_back({w[i], i});

    sort(all(v));
 
    for (int i = 1; i <= n; i++) {
        pref[i] = pref[i - 1] + v[i - 1].fi;
        // cout << i << ' ' << pref[i] << endl;
    }

    for (int len = 1; len <= n; len++) {
        if (l <= pref[len] && pref[len] <= u) {
            vector<int> ans;

            for (int i = 1; i <= len; i++) {
                ans.push_back(v[i - 1].se);
            }

            sort(all(ans));
            return ans;
        }

        if (l <= pref[n] - pref[n - len] && pref[n] - pref[n - len] <= u) {
           vector<int> ans;

            for (int i = n - len + 1; i <= n; i++) {
                ans.push_back(v[i - 1].se);
            }
            
            sort(all(ans));
            return ans;
        }

        if (pref[len] < l && pref[n] - pref[n - len] > u) {
            vector<int> ans;

            for (int i = len; i <= n; i++) {
                if (pref[i] - pref[i - len] >= l) {
                    for (int j = i - len + 1; j <= i; j++) {
                        ans.push_back(v[j - 1].se);
                    }
                    break;
                }
            }

            sort(all(ans));

            return ans;
        }
    }

    return vector<int> {};
}

#ifdef LOCAL

void solve() {
    int n, l, u; cin >> n >> l >> u;
    vector<int> w(n); for (int &x: w) cin >> x;

    auto ans = find_subset(l, u, w);

    for (int x: ans) cout << x << ' ';
    cout << '\n';
}

signed main() {
    cin.tie(0) -> sync_with_stdio(0);

    int T = 1; // cin >> T;
    while (T--) {
        solve();
    }
}

#endif

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