Submission #789933

#TimeUsernameProblemLanguageResultExecution timeMemory
789933alvingogoDetecting Molecules (IOI16_molecules)C++14
9 / 100
1 ms300 KiB
#include "molecules.h"
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define fs first
#define sc second
#define p_q priority_queue
using namespace std;

vector<int> find_subset(int l, int u, vector<int> w) {
    int n=w.size();
    auto z=w;
    vector<pair<long long,int> > v;
    for(int i=0;i<n;i++){
        v.push_back({w[i],i});
    }
    sort(v.begin(),v.end());
    auto a=v,b=v;
    reverse(b.begin(),b.end());
    for(int i=1;i<n;i++){
        a[i].fs+=a[i-1].fs;
        b[i].fs+=b[i-1].fs;
    }
    for(int i=0;i<n;i++){
        int x=a[i].fs,y=b[i].fs;
        if(x>=l && x<=u){
            vector<int> c;
            for(int j=0;j<=i;j++){
                c.push_back(a[j].sc);
            }
            return c;
        }
        else if(y>=l && y<=u){
            vector<int> c;
            for(int j=0;j<=i;j++){
                c.push_back(b[j].sc);
            }
            return c;
        }
        else if(x<=l && y>=u){
            vector<int> c;
            int f=x;
            for(int j=0;j<=i;j++){
                c.push_back(a[j].sc);
            }
            for(int j=0;j<=i;j++){
                c[j]=b[j].sc;
                f+=(b[j].fs-a[j].fs);
                if(f>=l && f<=u){
                    return c;
                }
            }
        }
    }
    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...