Submission #1311798

#TimeUsernameProblemLanguageResultExecution timeMemory
1311798settopDetecting Molecules (IOI16_molecules)C++20
100 / 100
42 ms6680 KiB
#include "molecules.h"
#include<bits/stdc++.h>

using namespace std;
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

#define ll long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>
typedef pair<ll,ll> pii;

std::vector<int> find_subset(int l,int u, std::vector<int> w) {
    int n=sz(w);
    vector<pii> v;
    fall(i,0,n-1) v.pb({w[i],i});
    sort(all(v));

    vector<ll> pref(n+1);

    fall(i,1,n) pref[i]=pref[i-1]+v[i-1].first;

    fall(tam,1,n){
        int ini=0,fim=min(tam,n-tam);
        while(ini<=fim){
            int mei=(ini+fim)/2;
            long long soma=pref[n]-pref[n-mei]+pref[tam]-pref[mei];
            if(soma>u) fim=mei-1;
            else if(soma<l) ini=mei+1;
            else{
                vector<int> ans;
                rfall(i,n,n-mei+1) ans.pb(v[i-1].second);
                rfall(i,tam,mei+1) ans.pb(v[i-1].second);
                sort(all(ans));
                return ans;
            }
        }
    }
    return {};
}

Compilation message (stderr)

molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...