제출 #1001778

#제출 시각아이디문제언어결과실행 시간메모리
1001778vjudge1Detecting Molecules (IOI16_molecules)C++14
0 / 100
1 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;
    int idx =0; 
    for(int i=0;i<n;i++){
        // cout<<arr[i]<<endl;
        if(arr[i]>l){
            continue;
        }

        if(arr[i]>=u){
            for(int j=0;j<n;j++){
                if(temp[j]==arr[i]){
                    ans.pb(j);
                    break;
                }
            }
            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;
                ansp=sumnow;
                idx=i;
                break;
            }
        }

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

    
    // reverse(all(ans));
    map<int,int> need;
    vector<int> ans2;
    int sum=0;
    if(ansp==-1){
        return ans2;
    }
    int tmp=ansp;
    set<int> used;
    while(!(sum>=u && sum<=l)){
        // cout<<sum<<endl;
        auto it = var.lower_bound({tmp-sum,-1});
        need[arr[(*it).second]]++;
        sum+=arr[(*it).second];
        var.erase(it);

    }
    
    for(int i=0;i<n;i++){
        if(need[temp[i]]){
            ans2.pb(i);
            need[temp[i]]--;
        }
    }
    return ans2;
}

컴파일 시 표준 에러 (stderr) 메시지

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:19:9: warning: variable 'idx' set but not used [-Wunused-but-set-variable]
   19 |     int idx =0;
      |         ^~~
#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...