Submission #957140

#TimeUsernameProblemLanguageResultExecution timeMemory
957140vjudge1Detecting Molecules (IOI16_molecules)C++17
100 / 100
46 ms9516 KiB
#include <bits/stdc++.h>
using namespace std;

vector <int> find_subset(int l,int u,vector<int> a){
    vector <pair<long long,int>> w;
    int n=(int)a.size();
    vector<int> ans;
    long long sum=0;
    int r=0;
    for(int i=0;i<n;i++)w.push_back({a[i],i});
    sort(w.begin(),w.end());
    for(int i=0;i<n;i++){
        while(sum<l && r<n){
            sum+=w[r].first;
            r++;
        }
        if(l<=sum && sum<=u  ){
            for(int j=i;j<r;j++){
                ans.push_back(w[j].second);
            }
            return ans;
        }
        sum-=w[i].first;
    }
    return {};
}

/*
---------------------------------------------------go get gold---------------------------------------------------------------------
- If u see the problem dp there's many option to iterate, u can iterate from 1- n or 1 - (possible max number)
- If u see the problem that has unexpected constraint u can divide it into 2 problem
- If u see the problem that can use binary search, then u can use binser + check condition
- in interactive problem there's many trick using binser
- kalo misal mau cari yang sama pake pernah ke visit ga bilangan itu
- kalo problem yang high itu biasanya optimisasi nya pake 2 array
- dp bisa aja kek kamu tenzing balls dimana optimisasi 2 dp
- janlup fibonacci
- kalo binser mending r = 3 * 1e18 aja
- kalo mau dibalik itu pake value nya tinggal diubah ke size
 */
#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...