Submission #1219810

#TimeUsernameProblemLanguageResultExecution timeMemory
1219810LIADetecting Molecules (IOI16_molecules)C++17
100 / 100
77 ms17584 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef tuple <ll,ll,ll> plll; typedef vector <plll> vplll; typedef pair <ll,ll> pll; typedef vector <ll> vll; typedef vector <pll> vpll; typedef vector <vector <pll>> vvpll; typedef vector <vector <ll>> vvll; typedef vector <bool> vb; typedef vector <vector <bool>> vvb; #define loop(i, s, e) for (ll i = (s); i < (e); ++i) #define loopr(i, e, s) for (ll i = (e)-1; i >= (s); --i) #define all(a) a.begin(), a.end() const ll inf = 1e9 + 7; std::vector<int> find_subset(int l, int r, std::vector<int> w) { ll n = w.size(); multiset<pll, greater<pll>> in; vpll v(n); vector<int> ansi; loop(i,0,n) v[i] = {w[i], i}; sort(all(v)); reverse(all(v)); ll sum = 0; ll last_idx; loop(i,0,n) { if (sum>=l) break; auto [num,idx] = v[i]; last_idx = i; sum+=num; in.insert({num,idx}); } if (sum<l ) return {}; if (sum>=l&& sum<=r) { for (auto [num,idx] : in) ansi.push_back((int)idx); return ansi; } loop(i,last_idx+1,n) { if (sum>=l && sum<=r) { for (auto [num,idx] : in) ansi.push_back(idx); return ansi; } else if (sum>l) { auto it = in.begin(); ll mx_num = it->first, idx = it->second; auto [add, ind] = v[i]; sum+= -mx_num+add; in.erase(it); in.insert({add,ind}); } else if (sum<l) { auto [add, ind] = v[i]; sum+= add; in.insert({add,ind}); } } if (sum>=l && sum<=r) { for (auto [num,idx] : in) ansi.push_back(idx); return ansi; } return {}; }

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