# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
303535 | user202729 | 비스킷 담기 (IOI20_biscuits) | C++17 | 1135 ms | 1051336 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
// moreflags=grader.cpp
// naive solution (penultimate subtask)
#include "biscuits.h"
#include<cstdint>
#include<vector>
#include<cmath>
#include<iostream>
long long count_tastiness(long long x, std::vector<long long> a) {
std::vector<int64_t> all{a[0]};
int64_t s=0;
for(int i=0;; ++i){
/*
for(auto y: all) std::cout<<((y-s)>>std::min(i, 62))<<' ';
std::cout<<" << \n";
*/
// optional subtract x
if(all[0]-x*std::round(std::pow(2., i))>=s){
// ^ check to avoid x<<i overflows int64_t (which is actually what happened to me in the contest)
for(int n=(int)all.size(), index=0; index<n;++index)
if(
all[index]-(x<<i)
>=s
)
all.push_back(all[index]-(x<<i));
else break;
}
if(i+1<(int)a.size())
s-=a[i+1]<<(i+1);
if(i==a.size()+62){ // +62 is actually a good idea, to avoid handling some special cases
// the total complexity remains about small+2e5 for that subtask
return (int)all.size();
}
}
}
컴파일 시 표준 에러 (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... |