# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
299366 | oscarsierra12 | Detecting Molecules (IOI16_molecules) | C++14 | 1 ms | 256 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std ;
vector <pair<int,int>> wr ;
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
vector <int> ans, ot ;
if ( *min_element (w.begin(), w.end()) > u ) return std::vector<int>(0) ;
for ( int i = 0 ; i < w.size() ; ++i ) {
wr.push_back ( {w[i], i} ) ;
if ( w[i] >= l && w[i] <= u ) {
ans.push_back ( i ) ;
return ans ;
}
}
long long s = 0 ;
int sz = w.size() ;
sort ( wr.begin(), wr.end() ) ;
for ( int i = 0 ; i < sz ; ++i ) {
s += wr[i].first ;
if ( s >= l ) {
if ( s <= u ) {
sort ( ans.begin(), ans.end() ) ;
return ans ;
}
s -= wr[i].first ;
int s2 = 0 ;
for ( int j = sz - 1 ; j >= sz - i ; --j ) s2 += wr[i].first ;
if ( s2 < l ) return std::vector <int> (0) ;
for ( int j = sz - 1 ; j >= sz - i ; --j ) {
s -= wr[ans.back()-1].first ;
s += wr[j].first ;
ans.pop_back() ;
ot.push_back (wr[j].second) ;
if ( s >= l && s <= u ) {
for ( auto i:ot ) ans.push_back ( i ) ;
sort ( ans.begin(), ans.end() ) ;
return ans ;
}
}
break ;
}
ans.push_back ( wr[i].second ) ;
}
return std::vector <int>(0) ;
}
컴파일 시 표준 에러 (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... |