Submission #1004059

#TimeUsernameProblemLanguageResultExecution timeMemory
1004059spensaDetecting Molecules (IOI16_molecules)C++17
0 / 100
0 ms432 KiB
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
#define pb push_back
#define mp make_pair
#define FOR(i, a, b) for(int i=(signed)(a); i<=(signed)(b); i++)
#define F0R(i, a) for(int i=(signed)(0); i<(signed)(a); i++)

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    vector<pair<ll, int>> v;
    int N = w.size();
    ll tsm = 0LL;
    FOR(i, 0, N-1){
        v.pb(mp((ll) w[i], i));
        tsm += w[i];
    }

    if(tsm>l) return vector<int>(0);


    sort(v.begin(), v.end());
    int a, b;
    a = b = 0;
    ll cur = v[0].first;
    
    vector<int> ans;
    if(cur>u) return vector<int>(0);
    if(cur>=l){
        ans.pb(v[0].second);
        return ans;
    }

    while(b<N){
        b++;
        cur += v[b].first;
        if(cur>=l && cur<=u){
            break;
        }
        while(cur>u){
            cur-=v[a].first;
            a++;
        }
    }

    tsm = 0;
    for(int i=a; i<=b; i++){
        tsm += v[i].first;
        ans.pb(v[i].second);
    }
    if(tsm>=l && tsm<=u) return ans;
    return vector<int>(0);
}
#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...