Submission #762063

#TimeUsernameProblemLanguageResultExecution timeMemory
762063AirCirclesDetecting Molecules (IOI16_molecules)C++17
100 / 100
46 ms9964 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;


vector<int> find_subset(int l, int u, vector<int> w) {
    int n=w.size();
    vector<pair<long long, long long> >dn(n);
    for(int i=0;i<n;i++){
        dn[i].first=w[i];
        dn[i].second=i;
    }
    sort(dn.begin(),dn.end());
    vector<long long> mi(n,0),mx(n,0);
    mi[0]=dn[0].first;
    mx[0]=dn[n-1].first;
    for(int i=1;i<n;i++){
        mi[i]=mi[i-1]+dn[i].first;
        mx[i]=mx[i-1]+dn[n-1-i].first;
    }
    vector<int>dm(0);
    for(int i=0;i<n;i++){
        if(mi[i]>u){
            break;
        }
        if(mx[i]<l){
            continue;
        }
        if(mi[i]<=u&&mx[i]>=l){
            long long k=mi[i];
            int q=0;
            for(int j=0;j<n;j++){
                if(k>=l){
                    q=j;
                    break;
                }else{
                    k+=dn[n-1-j].first-dn[j].first;
                }
            }
            for(int j=q;j<=i;j++){
                dm.push_back(dn[j].second);
            }
            for(int j=n-1;j>n-1-q;j--){
                dm.push_back(dn[j].second);
            }
            break;
        }
    }
    return dm;
}
#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...