Submission #853069

#TimeUsernameProblemLanguageResultExecution timeMemory
853069_uros9Detecting Molecules (IOI16_molecules)C++17
100 / 100
50 ms9188 KiB
#include <bits/stdc++.h>
#include "molecules.h"
#define endl '\n'
using namespace std;

const long long longlongmax=9223372036854775807;
const int modul=998244353;
const long long mod = 1e9 + 7;

vector<int> find_subset(int l,int u,vector<int> w){
    int n=w.size();
    vector<int> rez(0);
    vector<pair<int,int>> niz(n);
    for(int i=0; i<n; i++)
        niz[i]={w[i],i};
    sort(niz.begin(),niz.end());
    if(niz[0].first>u) return rez;
    vector<long long> pref(n+1,0);
    for(int i=0; i<n; i++){
        pref[i+1]=pref[i];
        pref[i+1]+=niz[i].first;
    }
    bool ok=false;
    int ll,dd;
    pref.push_back(1e15);
    for(int i=0; i<n&&!ok; i++){
        int ind=lower_bound(pref.begin(),pref.end(),pref[i]+l)-pref.begin();
        if(pref[ind]-pref[i]>u) continue;
        ok=true;
        ll=i;
        dd=ind;
    }
    if(!ok) return rez;
    for(int i=ll; i<=dd-1; i++)
        rez.push_back(niz[i].second);
    return rez;
}
#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...