Submission #1323983

#TimeUsernameProblemLanguageResultExecution timeMemory
1323983sh_qaxxorov_571Detecting Molecules (IOI16_molecules)C++20
100 / 100
33 ms3740 KiB
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

/**
 * l: quyi chegara
 * u: yuqori chegara
 * w: molekulalar og'irligi
 */
vector<int> find_subset(int l, int u, vector<int> w) {
    int n = w.size();
    // Elementlarni asl indekslari bilan birga saqlaymiz
    vector<pair<int, int>> sorted_w(n);
    for (int i = 0; i < n; i++) {
        sorted_w[i] = {w[i], i};
    }

    // Og'irlik bo'yicha saralaymiz
    sort(sorted_w.begin(), sorted_w.end());

    long long current_sum = 0;
    int left = 0;
    
    // Sliding Window (Sürüşuvchi oyna)
    for (int right = 0; right < n; right++) {
        current_sum += sorted_w[right].first;

        // Agar yig'indi u dan katta bo'lsa, chapdan elementlarni ayiramiz
        while (current_sum > u && left <= right) {
            current_sum -= sorted_w[left].first;
            left++;
        }

        // Agar yig'indi diapazonga tushsa, indekslarni qaytaramiz
        if (current_sum >= l && current_sum <= u) {
            vector<int> result;
            for (int i = left; i <= right; i++) {
                result.push_back(sorted_w[i].second);
            }
            return result;
        }
    }

    // Agar hech qanday qism-to'plam topilmasa
    return vector<int>();
}     

Compilation message (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...