제출 #419255

#제출 시각아이디문제언어결과실행 시간메모리
419255someoneDetecting Molecules (IOI16_molecules)C++14
69 / 100
40 ms5540 KiB
#include <bits/stdc++.h>
#include "molecules.h"
using ll = long long;
//using namespace std;

struct Molecule {
    int val, i;
};

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    std::vector<Molecule> mol;
    int n = w.size();
    ll sum[n+1];
    sum[0] = 0;
    for(int i = 0; i < n; i++)
        mol.push_back({w[i], i});
    sort(mol.begin(), mol.end(),
    [](Molecule a, Molecule b) {
        return a.val < b.val;
    });
    for(int i = 0; i < n; i++)
        sum[i+1] = sum[i] + mol[i].val;
    std::vector<int> ans;
    bool hasAnswer = false;
    for(int i = 1; i <= n && !hasAnswer; i++) {
        int mini = sum[i],
            maxi = sum[n] - sum[n-i];
        if(mini <= u && l <= maxi) {
            for(int deb = 0, fin = i; fin <= n && !hasAnswer; deb++, fin++) {
                int s = sum[fin] - sum[deb];
                if((ll)l <= s && s <= (ll)u) {
                    hasAnswer = true;
                    for(int j = deb; j < fin; j++)
                        ans.push_back(mol[j].i);
                }
            }
        }
    }
    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...