# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
59387 | 2018-07-21T23:36:10 Z | updown1 | Detecting Molecules (IOI16_molecules) | C++17 | 0 ms | 0 KB |
/* Sort and two pointers */ #include <bits/stdc++.h> #include "molecules.h" using namespace std; typedef long long ll; #define For(i, a, b) for(int i=a; i<b; i++) #define ffi For(i, 0, N) #define ffj For(j, 0, M) #define ffa ffi ffj #define s <<" "<< #define c <<" : "<< //#define w cout #define e endl #define pb push_back #define mp make_pair #define a first #define b second #define int ll const int MAXN = 3000000; //500,000,000 operations std::vector<int> find_subset(int l, int u, std::vector<int> w) { //return std::vector<int>(0); sort(w.begin(), w.end()); ll lll = 0, sum = 0; For (r, 0, w.size()) { sum += w[r]; while (sum > u) {sum -= w[lll]; lll++;} assert(sum <= u); if (sum >= l) { vector<int> ret; For (i, lll, r+1) ret.pb(i); return ret; } //cout<< lll s r c sum s l s u<<e; } return std::vector<int>(0); } /* main() { freopen("test.in", "r", stdin); int n, l, u; assert(3 == scanf("%d %d %d", &n, &l, &u)); std::vector<int> w(n); for (int i = 0; i < n; i++) assert(1 == scanf("%d", &w[i])); std::vector<int> result = find_subset(l, u, w); printf("%d\n", (int)result.size()); for (int i = 0; i < (int)result.size(); i++) printf("%d%c", result[i], " \n"[i == (int)result.size() - 1]); } */