# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
218938 | yayups | Detecting Molecules (IOI16_molecules) | C++11 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
// created 01 FEB 2018
// updated JUNE 2018
// updated JULY 2018
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <cstring>
#include <map>
#include <cstdlib>
#include <ctime>
#include <cassert>
#include <bitset>
#include <fstream>
#include <sstream>
#include <cstdlib>
#include <list>
#include <stdexcept>
#define N 200000
using namespace std;
vector<int> find_subset(int l, int u, vector<int> w) {
int n=w.size();
vector<int> v(n);
vector<int> result;
v[0]=w[0];
for(int i=0;i<n;i++) {
v[i] = v[i-1]+w[i];
}
vector<int>::iterator low,up;
int a,b=0;
int t;
//it's going to be v[b]-v[a]
for(a=-1;a<n;a++) {
if(a==-1) {
t=0;
}
else {
t=v[a];
}
low=lower_bound(v.begin()+(1+a),v.end(),l+t);
up =upper_bound(v.begin()+(1+a),v.end(),u+t);
if(low-v.begin()<up-v.begin()) {
b=low-v.begin();
break;
}
}
//cout << a<<endl<<b<<endl;
if(a==n) {
return 0;
}
for(int i=0;i<b-a;i++) {
result.push_back(a+1+i);
}
return result;
}