제출 #953875

#제출 시각아이디문제언어결과실행 시간메모리
953875emad234Detecting Molecules (IOI16_molecules)C++17
100 / 100
40 ms9920 KiB
#include "molecules.h"
#include <bits/stdc++.h>
#define ll long long
#define F first
#define S second
#define pii pair<ll, ll>
const ll mod = 1e9 + 7;
const ll mxN = 1e6 + 5;
using namespace std;

std::vector<int> find_subset(int l, int u, std::vector<int> w)
{
    vector<pii>v;
    int n = w.size();
    int R = n - 1;
    for(int i = 0;i < n;i++){
        v.push_back({w[i],i});
    }
    sort(v.begin(), v.end());
    ll num = 0;
    vector<int> ans;
    for (int i = n - 1; i >= 0; i--)
    {
        if (num >= l && num <= u)
        {
            for (int j = i + 1; j <= R; j++)
                ans.push_back(v[j].S);
            return ans;
        }
        if (num > u)
        {
            num -= v[R].F;
            R--;
        }
        if (num >= l && num <= u)
        {
            for (int j = i + 1; j <= R; j++)
                ans.push_back(v[j].S);
            return ans;
        }
        num += v[i].F;
        if (num >= l && num <= u)
        {
            // cout << i << ' ' << R << '\n';
            for (int j = i; j <= R; j++)
                ans.push_back(v[j].S);
            return ans;
        }
    }
    return {};
}
#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...