Submission #1332787

#TimeUsernameProblemLanguageResultExecution timeMemory
1332787br1Detecting Molecules (IOI16_molecules)C++20
100 / 100
46 ms6824 KiB
#include "molecules.h"

#include<bits/stdc++.h>
using namespace std;

#define pb push_back
#define all(x) (x).begin(), (x).end()
#define srt(x) sort(all(x))
#define sz(x) (int)(x).size()

using ll = long long;
using vll = vector<ll>;

vector<int> find_subset(int l, int u, vector<int> w) {
    int n = sz(w);
    vector<pair<int, int>> a(n);
    for(int i=0; i<n; i++) a[i] = {w[i], i};
    srt(a); srt(w);
    
    vll pf(n+1), sf(n+2);
    for(int i=1; i<=n; i++) pf[i] = pf[i-1] + 1ll*w[i-1];
    for(int i=n; i>=0; i--) sf[i] = sf[i+1] + 1ll*w[i-1];
    
    for(int i=1; i<=n; i++) if(pf[i] <= u && sf[n+1 - i] >= l){
        for(int j=i; 1; j++) if(l <= pf[j] - pf[j-i] && pf[j] - pf[j-i] <= u){
            vector<int> ans;
            for(int k=j-i; k<j; k++) ans.pb(a[k].second);
            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...