Submission #1732679
Source Code Expand
#include<bits/stdc++.h> using namespace std; template< class T > struct ConvexHullTrickAddQueryMonotone { deque< pair< T, T > > L; int isdec; ConvexHullTrickAddQueryMonotone() : isdec(-1) {} inline T getX(const pair< T, T > &a, const T &x) { return (a.first * x + a.second); } inline bool check(const pair< T, T > &a, const pair< T, T > &b, const pair< T, T > &c) { return ((__int128_t) (b.first - a.first) * (c.second - b.second) >= (__int128_t) (b.second - a.second) * (c.first - b.first)); } inline bool empty() { return (L.empty()); } void add(T a, T b) { pair< T, T > line(a, b); if(!L.empty() && L.back().first == a) { line.second = min(line.second, L.back().second); L.pop_back(); } while(L.size() >= 2 && check(L[L.size() - 2], L.back(), line)) L.pop_back(); L.emplace_back(line); } T getMinimumQuery(T x) { int low = -1, high = (int) L.size() - 1; while(high - low > 1) { int mid = (low + high) >> 1; if((getX(L[mid], x) >= getX(L[mid + 1], x))) low = mid; else high = mid; } return (getX(L[high], x)); } T getMinimumQueryMonotone(T x) { while(L.size() >= 2 && getX(L[0], x) >= getX(L[1], x)) { L.pop_front(); } return (getX(L[0], x)); } }; using int64 = long long; int main() { int64 N, A; cin >> N >> A; if(N == 1) { cout << 1 << endl; } else if(N <= A) { cout << N << endl; } else { ConvexHullTrickAddQueryMonotone< int64 > cht; cht.add(-1, 0); for(int64 j = A;; j++) { if(-cht.getMinimumQuery(j) >= N) { cout << j << endl; return (0); } auto val = -cht.getMinimumQueryMonotone(j - A); cht.add(-val, val * j); } } }
Submission Info
Submission Time | |
---|---|
Task | E - Cookies |
User | ei13333 |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 1829 Byte |
Status | AC |
Exec Time | 466 ms |
Memory | 32772 KB |
Judge Result
Set Name | sample | dataset1 | dataset2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 500 / 500 | 500 / 500 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
sample | sample-01.txt, sample-02.txt, sample-03.txt |
dataset1 | sample-01.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt |
dataset2 | sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 02-23.txt, 02-24.txt, 02-25.txt, 02-26.txt, 02-27.txt, 02-28.txt, 02-29.txt, 02-30.txt, 02-31.txt, 02-32.txt, 02-33.txt, 02-34.txt, 02-35.txt, 02-36.txt, 02-37.txt, 02-38.txt, 02-39.txt, 02-40.txt, sample-01.txt, sample-02.txt, sample-03.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01-01.txt | AC | 1 ms | 256 KB |
01-02.txt | AC | 1 ms | 256 KB |
01-03.txt | AC | 1 ms | 256 KB |
01-04.txt | AC | 1 ms | 256 KB |
01-05.txt | AC | 1 ms | 256 KB |
01-06.txt | AC | 1 ms | 256 KB |
01-07.txt | AC | 1 ms | 256 KB |
01-08.txt | AC | 1 ms | 256 KB |
01-09.txt | AC | 1 ms | 256 KB |
01-10.txt | AC | 1 ms | 256 KB |
01-11.txt | AC | 1 ms | 256 KB |
01-12.txt | AC | 2 ms | 256 KB |
01-13.txt | AC | 1 ms | 256 KB |
01-14.txt | AC | 1 ms | 256 KB |
01-15.txt | AC | 1 ms | 256 KB |
01-16.txt | AC | 1 ms | 256 KB |
01-17.txt | AC | 1 ms | 256 KB |
01-18.txt | AC | 1 ms | 256 KB |
01-19.txt | AC | 1 ms | 256 KB |
01-20.txt | AC | 1 ms | 256 KB |
01-21.txt | AC | 1 ms | 256 KB |
01-22.txt | AC | 1 ms | 256 KB |
01-23.txt | AC | 1 ms | 256 KB |
01-24.txt | AC | 1 ms | 256 KB |
01-25.txt | AC | 1 ms | 256 KB |
01-26.txt | AC | 1 ms | 256 KB |
02-01.txt | AC | 1 ms | 256 KB |
02-02.txt | AC | 1 ms | 256 KB |
02-03.txt | AC | 1 ms | 256 KB |
02-04.txt | AC | 1 ms | 256 KB |
02-05.txt | AC | 1 ms | 256 KB |
02-06.txt | AC | 1 ms | 256 KB |
02-07.txt | AC | 1 ms | 256 KB |
02-08.txt | AC | 1 ms | 256 KB |
02-09.txt | AC | 1 ms | 256 KB |
02-10.txt | AC | 1 ms | 256 KB |
02-11.txt | AC | 1 ms | 256 KB |
02-12.txt | AC | 1 ms | 256 KB |
02-13.txt | AC | 1 ms | 256 KB |
02-14.txt | AC | 1 ms | 256 KB |
02-15.txt | AC | 1 ms | 256 KB |
02-16.txt | AC | 1 ms | 256 KB |
02-17.txt | AC | 2 ms | 256 KB |
02-18.txt | AC | 1 ms | 256 KB |
02-19.txt | AC | 2 ms | 256 KB |
02-20.txt | AC | 3 ms | 256 KB |
02-21.txt | AC | 11 ms | 696 KB |
02-22.txt | AC | 466 ms | 32516 KB |
02-23.txt | AC | 208 ms | 16564 KB |
02-24.txt | AC | 208 ms | 16564 KB |
02-25.txt | AC | 1 ms | 256 KB |
02-26.txt | AC | 1 ms | 256 KB |
02-27.txt | AC | 1 ms | 256 KB |
02-28.txt | AC | 1 ms | 256 KB |
02-29.txt | AC | 1 ms | 256 KB |
02-30.txt | AC | 1 ms | 256 KB |
02-31.txt | AC | 1 ms | 256 KB |
02-32.txt | AC | 1 ms | 256 KB |
02-33.txt | AC | 1 ms | 256 KB |
02-34.txt | AC | 1 ms | 256 KB |
02-35.txt | AC | 1 ms | 256 KB |
02-36.txt | AC | 1 ms | 256 KB |
02-37.txt | AC | 2 ms | 256 KB |
02-38.txt | AC | 3 ms | 384 KB |
02-39.txt | AC | 193 ms | 14096 KB |
02-40.txt | AC | 456 ms | 32772 KB |
sample-01.txt | AC | 1 ms | 256 KB |
sample-02.txt | AC | 1 ms | 256 KB |
sample-03.txt | AC | 1 ms | 256 KB |