Submission #787371

#TimeUsernameProblemLanguageResultExecution timeMemory
787371fatemetmhrDetecting Molecules (IOI16_molecules)C++17
100 / 100
40 ms6964 KiB
//  ~ Be Name Khoda ~  //

#include "molecules.h"
#include <bits/stdc++.h>
//#pragma GCC optimize ("O3")
//#pragma GCC target("avx2")
//#pragma GCC optimize("unroll-loops,Ofast")

using namespace std;

typedef long long ll;

#define pb       push_back
#define mp       make_pair
#define all(x)   x.begin(), x.end()
#define fi       first
#define se       second

const int maxn  =  1e6   + 10;
const int maxn5 =  5e5   + 10;
const int maxnt =  1.2e6 + 10;
const int maxn3 =  1e3   + 10;
const int mod   =  1e9   + 7;
const ll  inf   =  1e18;

vector <pair<ll, int>> w;
ll ps[maxn5];
bool mark[maxn5];

std::vector<int> find_subset(int l, int u, std::vector<int> W) {
    int n = W.size();
    for(int i = 0; i < n; i++)
        w.pb({W[i], i});
    sort(all(w));
    ps[0] = w[0].fi;
    for(int i = 1; i < n; i++)
        ps[i] = w[i].fi + ps[i - 1];
    for(int len = 1; len <= n; len++){
        //cout << len << ' ' << l << ' ' << u << ' ' << ps[len - 1] << ' ' << ps[n - 1] - (len == n ? 0 : ps[n - len - 1]) << endl;
        if(ps[len - 1] <= u && ps[n - 1] - (len == n ? 0 : ps[n - len - 1]) >= l){
            ll sum = 0;
            for(int i = 0; i < len; i++){
                mark[i] = true;
                sum += w[i].fi;
            }
            int pt = 0, ind = n - 1;
            while(sum < l){
                //cout << len << ' ' << sum << ' ' << pt << ' ' << ind << endl;
                mark[pt] = false;
                sum += w[ind].fi - w[pt].fi;
                mark[ind] = true;
                pt++;
                ind--;
            }
            vector <int> ans;
            for(int i = 0; i < n;i ++) if(mark[i])
                ans.pb(w[i].se);
            return ans;
        }
    }
    vector <int> ans;
    ans.clear();
    return ans;
}
#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...