Submission #1001723

#TimeUsernameProblemLanguageResultExecution timeMemory
1001723vjudge1Detecting Molecules (IOI16_molecules)C++14
0 / 100
0 ms348 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
#define ins insert
#define pb push_back
#define pii pair<int, int>
#define endl '\n'
#define drop(x) cout<<(x)<<endl; return;
#define all(x) x.begin(),x.end()
vector<int> find_subset(int l, int u, vector<int> arr) {
    int n = arr.size();
    vector<int> parent(n,-1);
    int ansp = -1;
    vector<int> ans;
    vector<int> temp=arr;
    sort(all(arr));
    swap(l,u);
    set<pair<int,int>> var;
    for(int i=0;i<n;i++){
        // cout<<arr[i]<<endl;
        if(arr[i]>l){
            continue;
        }

        if(arr[i]>=u){
            ans.pb(i);
            return ans;
        }

        int x = l-arr[i];
        auto it = var.upper_bound({x,-1});
        // cout<<arr[i]<<"  ucun it search"<<endl;
        if(it!=var.begin()){
            --it;
            // cout<<arr[i]<<" buldum "<<(*it).second<<endl;
            int sumnow = arr[i]+ (*it).first;
            cout<<sumnow<<endl;
            parent[i]=(*it).second;
            var.ins({sumnow,i});
            if(sumnow>=u && sumnow<=l){
                ansp=i;
                // cout<<ansp<<endl;
                break;
            }
        }

        var.ins({arr[i],i});
        // cout<<arr[i]<<" insertledim"<<endl;
    }


    while(ansp!=-1){
        ans.pb(ansp);
        ansp= parent[ansp];
    }
    // reverse(all(ans));
    map<int,int> need;
    vector<int> ans2;
    int s=0;
    for(auto v:ans){
        s+=arr[v];
        need[arr[v]]++;
        // cout<<v<<endl;
        if(s>=u && s<=l){
            break;
        }
    }
    for(int i=0;i<n;i++){
        if(need[temp[i]]){
            ans2.pb(i);
            need[temp[i]]--;
        }
    }
    return ans2;
}
#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...