# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
87695 | Retro3014 | Detecting Molecules (IOI16_molecules) | C++17 | 67 ms | 34644 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "molecules.h"
#include <vector>
#include <algorithm>
typedef long long ll;
struct S{
int x, y;
bool operator <(const S &a)const{
return y<a.y;
}
};
using namespace std;
#define MAX_N 200000
vector<int> ans;
vector<S> v;
ll sum1[MAX_N+10], sum2[MAX_N+10];
vector<int> find_subset(int l, int u, vector<int> w){
for(int i=0; i<w.size(); i++){
v.push_back({i, w[i]});
}
sort(v.begin(), v.end());
for(int i=0; i<v.size(); i++){
if(i==0){
sum1[i]=(ll)v[i].y;
}else{
sum1[i]=sum1[i-1]+(ll)v[i].y;
}
}
for(int i=(int)v.size()-1; i>=0; i--){
if(i==v.size()-1){
sum2[i]=(ll)v[i].y;
}else{
sum2[i]=sum2[i+1]+(ll)v[i].y;
}
}
int s=-1, e=0;
while(e<=v.size()){
if((s==-1?0:sum1[s])+sum2[e]>=(ll)l && (s==-1?0:sum1[s])+sum2[e]<=u){
break;
}
else if((s==-1?0:sum1[s])+sum2[e]<(ll)l){
if(s==e-1){
break;
}
s++;
}else{
e++;
}
}
if((s==-1?0:sum1[s])+sum2[e]>=(ll)l && (s==-1?0:sum1[s])+sum2[e]<=u){
for(int i=0; i<=s; i++){
ans.push_back(v[i].x);
}
for(int i=e; i<v.size(); i++){
ans.push_back(v[i].x);
}
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |