제출 #1191418

#제출 시각아이디문제언어결과실행 시간메모리
1191418nekolieDetecting Molecules (IOI16_molecules)C++20
100 / 100
35 ms5448 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> find_subset(int l, int r, vector<int> a) {
    int n = a.size();
    pair<int,int> risa[n];
    for (int i = 0; i < n; i++)
        risa[i].first = a[i], risa[i].second = i;
    sort(risa,risa+n);
    long long suma[n], ile; suma[0] = risa[0].first;
    for (int i = 1; i < n; i++)
        suma[i] = suma[i-1]+risa[i].first;
    vector<int> odp;
    for (int k = 1; k <= n; k++) {
        if (suma[k-1] > r || suma[n-1] < l || (k < n && suma[n-1]-suma[n-k-1] < l))
            continue;
        vector<pair<int,int>> op;
        for (int i = 0; i < k; i++)
            op.push_back({i,n-i-1});
        while (op.back().first > op.back().second)
            odp.push_back(risa[op.back().first].second), op.pop_back();
        ile = suma[k-1];
        for (int i = 0; i < op.size(); i++) {
            if (ile < l)
                ile += risa[op[i].second].first-risa[op[i].first].first, odp.push_back(risa[op[i].second].second);
            else
                odp.push_back(risa[op[i].first].second);
        }
        assert(l <= ile && ile <= r);
        break;
    }
    return odp;
}

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

molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...