제출 #883675

#제출 시각아이디문제언어결과실행 시간메모리
883675MalixDetecting Molecules (IOI16_molecules)C++14
100 / 100
39 ms5728 KiB
#include "molecules.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;

#define REP(i,a,b) for(int i=a;i<b;i++)

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    int n=w.size();
    vector<pair<int,int>> arr(n);
    REP(i,0,n){
        arr[i].first=w[i];
        arr[i].second=i;
    }
    sort(arr.begin(),arr.end());
    ll sum=0;
    int a=0,b=0;
    int a1=a;int b1=b;
    sum+=(ll)arr[0].first;
    while(b<n){
        while(b+1<n&&sum<l){
            b++;
            sum+=(ll)arr[b].first;
        }
        while(a<b&&sum>u){
            sum-=(ll)arr[a].first;
            a++;
        }
        if(sum>=l&&sum<=u)break;
        if(b==n-1&&a+1==b)return std::vector<int>(0);
        if(b==b1&&a==a1)return std::vector<int>(0);
        a1=a;b1=b;
        
    }
    vi ans;
    REP(i,a,b+1)ans.push_back(arr[i].second);
    return ans;
    
}
#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...