제출 #297849

#제출 시각아이디문제언어결과실행 시간메모리
297849kevleeDetecting Molecules (IOI16_molecules)C++17
69 / 100
1036 ms9424 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define mod 1000000007 #define h1 7897897897897897 #define h2 7897466719774591 #define b1 98762051 #define b2 98765431 #define inf 1000000000 #define pi 3.1415926535897932384626 #define LMAX 9223372036854775807 #define ll long long #define fi first #define se second #define pii pair<int, int> #define pll pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define vp vector<pii> #define SET(a, b) memset(a, b, sizeof(a)) #define all(x) (x).begin(), (x).end() #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FORD(i, a, b) for (int i = (a); i >= (b); i--) pii a[200005]; vector<int> find_subset(int l, int u, vector<int> w) { vi ret; int n = 0; for (int weight: w) { a[n] = {weight, n}; n++; } sort(a, a + n); set <ll> s; ll sum = 0; s.insert(0); FOR(i, 0, n-1) { sum += a[i].fi; auto it = s.lower_bound(sum - u); ll num = 0; if (it != s.end()) { num = *it; } cerr << sum << ' ' << num << endl; if (sum - num >= l && sum - num <= u) { ll cursum = 0; FORD(j, i, 0) { cursum += a[j].fi; ret.pb(a[j].se); if (cursum >= l) return ret; } } s.insert(sum); } return ret; }
#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...