Submission #290776

#TimeUsernameProblemLanguageResultExecution timeMemory
290776REALITYNBDetecting Molecules (IOI16_molecules)C++14
9 / 100
1 ms384 KiB
#include <bits/stdc++.h> 
#define ll long long 
#define all(a) a.begin(),a.end() 
#define mp make_pair
#define F first 
#define S second 
#define pii pair<int,int> 
using namespace std; 
vector<int> find_subset(int l , int r , vector<int> a){
    int sum=  0   ; 
    for(int x :a) sum+= x ;
    set<int> ans ;
    int n = a.size() ; 
    for(int i=0;i<n;i++) ans.insert(i) ; 
    vector<int> re ;
    set<pii> b ; 
    for(int i=0;i<n;i++)  b.insert(mp(a[i],i)) ; 
    while(1){
        if(b.empty()) break ; 
        if(r>=sum) break ; 
        auto it = b.end() ; 
        it-- ; 
        pii w = *it ;
        
        if(sum-w.F>r){
            sum-=w.F ; 
            b.erase(it) ; 
            ans.erase(w.S) ; 
        }
        else if(sum-w.F<l){
            b.erase(it) ; 
        }
        else{
            b.erase(it) ;
            ans.erase(w.S) ;  
            sum-=w.F ; 
        }
    }
    //if(sum>r) return re ; 
//  cout << 1 << " " ; 
    for(int  x : ans) re.push_back(x) ; 
    if(ans.size()&&sum<=r&&l<=sum)return re ;  
    vector<int> pp ; 
    return pp ; 
}
#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...