Submission #1137387

#TimeUsernameProblemLanguageResultExecution timeMemory
1137387gygDetecting Molecules (IOI16_molecules)C++20
31 / 100
1095 ms852 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
#define arr array
#define vec vector
#define pii pair<int, int>
#define fir first 
#define sec second
const int N = 2e5 + 5;

int l, u, n;
arr<pii, N> a;

set<pii> ans;
set<pii> st;
int chck(int sz) {
    st.clear();
    int sm = 0;
    for (int i = 1; i <= sz; i++)
        sm += a[i].fir, st.insert(a[i]);
    if (l <= sm && sm <= u) { ans = st; return 1; }
    if (u < sm) return 2;

    for (int i = n - sz + 1; i <= n; i++) {
        if (st.count(a[i])) continue;
        sm -= st.begin()->fir, st.erase(st.begin());
        sm += a[i].fir, st.insert(a[i]);
        if (l <= sm && sm <= u) { ans = st; return 1; }
    }
    return 3;
}

int cntr = 0;
vec<int> find_subset(int _l, int _u, vec<int> _a) {
    cntr++; assert(cntr == 1);

    l = _l, u = _u, n = _a.size();
    for (int i = 1; i <= n; i++) a[i] = {_a[i - 1], i};
    sort(a.begin() + 1, a.begin() + n + 1);

    for (int i = 1; i <= n; i++) 
        if (chck(i) == 1) break;    
        
    vec<int> rt;
    for (pii x : ans) rt.push_back(x.sec - 1);
    return rt;
    // 0-indexed
}

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...