Submission #472960

#TimeUsernameProblemLanguageResultExecution timeMemory
472960nadorbDetecting Molecules (IOI16_molecules)C++14
0 / 100
1 ms204 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

vector<int> find_subset(int l, int u, vector<int> w) {
    vector<pair<ll, int>> v(w.size());
    ll sum = 0, n = v.size();
    for(int  i = 0; i < n; i++){
        v[i].first = w[i];
        v[i].second = i;
    }
    sort(v.begin(), v.end());
    int db = 0;
    for(int i = 0; i < n; i++){
        if(sum + v[i].first <= u){
            sum += v[i].first;
            db++;
        }
    }
    vector<int> ki;
    int akt = 0;
    vector<int> mik;
    for(int i = 0; i < db; i++){
        mik.push_back(i);
    }
    while(akt < min((long long)db, (n - 1) / 2)){
        if(n - akt - 1 > akt){
            sum += v[n - akt - 1].first - v[akt].first;
            mik[akt] = n - akt - 1;
        }
        if(sum >= l){
            for(int i : mik){
                ki.push_back(v[i].second);
            }
            return ki;
        }
        akt++;
    }
    if(sum >= l){
        for(int i : mik){
            ki.push_back(v[i].second);
        }
        return ki;
    }
    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...