Submission #1323521

#TimeUsernameProblemLanguageResultExecution timeMemory
1323521chandan_159Detecting Molecules (IOI16_molecules)C++20
69 / 100
42 ms5396 KiB
#include <bits/stdc++.h>
using namespace std;

// ====== Short types ======
#define ll int
#define ld long double
#define str string
#define pll pair<ll, ll>
#define pii pair<int, int>
#define vll vector<ll>
#define vii vector<int>
#define vld vector<ld>
#define vs vector<string>
#define vch vector<char>
#define vpll vector<pll>
#define vpii vector<pii>
#define vvll vector<vll>
#define mll map<ll, ll>
#define msl map<string, ll>
#define mcl map<char, ll>
#define sll set<ll>
#define scl set<char>
#define ssl set<string>
#define mull multiset<ll>
#define mupll multiset<pll>
#define pqmax priority_queue<ll>                       // max heap
#define pqmin priority_queue<ll, vector<ll>, greater<ll>>  // min heap
#define pqmaxpll priority_queue<pll>                     // max heap of pairs
#define pqminpll priority_queue<pll, vector<pll>, greater<pll>> // min heap of pairs

// ====== Queues ======
#define qll queue<ll>
#define qpll queue<pll>

// ====== Common macros ======
#define pb push_back
#define ph push
#define fr front
#define pp pop()
#define tp top
#define ppb pop_back
#define ff first
#define ss second
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(x) (int)((x).size())
#define mpr make_pair
#define bk back
#define rtn return
#define ctn continue
#define brk break

// ====== Algorithms ======
#define uniq(x) x.erase(unique(all(x)), x.end())   // works only after sorting
#define sortv(v) sort(all(v))
#define rsortv(v) sort(rall(v))
#define maxv(v) *max_element(all(v))
#define minv(v) *min_element(all(v))
#define sumv(v) accumulate(all(v), 0LL)
#define rev(v) reverse(all(v))
#define lb lower_bound
#define ub upper_bound

// ====== Loops ======
#define forr(i, n) for (int i = 0; i < (n); i++)
#define rforr(i, n) for (ll i = (n)-1; i >= 0; i--)
#define forab(i, a, b) for (int i = (a); i <= (b); i++)
#define forba(i, a, b) for (ll i = (a); i >= (b); i--)



vector<int> find_subset(int u, int v, vector<int> w){
    int n = sz(w);
    vpii a(n);
    forr(i , n){
        a[i] = {w[i] , i};
    }
    sortv(a);
    vii prf(n+1 , 0);
    forr(i , n){
        prf[i+1] = prf[i] + a[i].ff;
    }
    vii ans;
    forab(i , 1 , n){
        int l = i , r = n , idx = -1;
        while(l <= r){
            int mid = (l + r) /2;
            if(prf[mid] - prf[i - 1] >= u){
                idx = mid;
                r = mid - 1;
            }
            else l = mid + 1;
        }
        if(idx != -1 && prf[idx] - prf[i - 1] <= v){
            forab(j , i - 1 , idx - 1) ans.pb(a[j].ss);
            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...