Submission #5539115
Source Code Expand
#include <bits/stdc++.h> using namespace std; using lint = long long; template<class T = int> using V = vector<T>; template<class T = int> using VV = V< V<T> >; // need内でのオーバーフローに注意(__int128_tを使う,long doubleでも行けるかも?) template<class T> struct ConvexHullTrick { struct Line { T a, b; }; deque<Line> deq; bool monotone_query; bool need(const Line& l, const Line& m, const Line& r) const { return m.b * (r.a - l.a) > l.b * (r.a - m.a) + r.b * (m.a - l.a); } ConvexHullTrick(bool monotone_query = false) : monotone_query(monotone_query) {} void add(T a, T b) { if (deq.empty() or a < deq[0].a) { while (deq.size() >= 2 and !need({a, b}, deq[0], deq[1])) { deq.pop_front(); } deq.emplace_front(Line{a, b}); } else if (a > deq.back().a) { while (deq.size() >= 2 and !need(deq[deq.size() - 2], deq.back(), {a, b})) { deq.pop_back(); } deq.emplace_back(Line{a, b}); } else assert(false); } T max(T x) { if (deq.empty()) return numeric_limits<T>::min(); // オーバーフローに注意 if (monotone_query) { while (deq.size() >= 2 and deq[0].a * x + deq[0].b <= deq[1].a * x + deq[1].b) { deq.pop_front(); } return deq[0].a * x + deq[0].b; } int ok = 0, ng = deq.size(); while (ng - ok > 1) { int m = ok + ng >> 1; (deq[m - 1].a * x + deq[m - 1].b <= deq[m].a * x + deq[m].b ? ok : ng) = m; } return deq[ok].a * x + deq[ok].b; } }; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); lint n, a; cin >> n >> a; if (a < 2e6) { V<lint> dp; ConvexHullTrick<lint> cht(true); for (int x = 0; ; ++x) { dp.push_back(x); if (a + 2 < x) { cht.add(dp[x - 1 - a], (1 - x) * dp[x - 1 - a]); dp[x] = max(dp[x], cht.max(x)); } if (dp[x] >= n) { cout << x << '\n'; return 0; } } } lint res = n; for (lint x = sqrt(n) - 2; x <= sqrt(n) + 2; ++x) { if (x < 2 or x >= n) continue; res = min(res, x + a + (n + x - 1) / x); } cout << res << '\n'; }
Submission Info
Submission Time | |
---|---|
Task | E - Cookies |
User | risujiroh |
Language | C++14 (GCC 5.4.1) |
Score | 500 |
Code Size | 2208 Byte |
Status | WA |
Exec Time | 73 ms |
Memory | 47456 KB |
Judge Result
Set Name | sample | dataset1 | dataset2 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 500 / 500 | 0 / 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 | 8 ms | 8812 KB |
01-13.txt | AC | 8 ms | 9196 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 | WA | 1 ms | 256 KB |
02-04.txt | WA | 1 ms | 256 KB |
02-05.txt | WA | 1 ms | 256 KB |
02-06.txt | WA | 1 ms | 256 KB |
02-07.txt | WA | 1 ms | 256 KB |
02-08.txt | WA | 1 ms | 256 KB |
02-09.txt | WA | 1 ms | 256 KB |
02-10.txt | WA | 1 ms | 256 KB |
02-11.txt | WA | 1 ms | 256 KB |
02-12.txt | WA | 1 ms | 256 KB |
02-13.txt | WA | 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 | 1 ms | 256 KB |
02-18.txt | AC | 1 ms | 256 KB |
02-19.txt | AC | 1 ms | 384 KB |
02-20.txt | AC | 1 ms | 512 KB |
02-21.txt | WA | 3 ms | 1528 KB |
02-22.txt | AC | 73 ms | 47456 KB |
02-23.txt | AC | 1 ms | 256 KB |
02-24.txt | AC | 1 ms | 256 KB |
02-25.txt | AC | 1 ms | 256 KB |
02-26.txt | AC | 1 ms | 256 KB |
02-27.txt | WA | 1 ms | 256 KB |
02-28.txt | WA | 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 | WA | 1 ms | 256 KB |
02-33.txt | WA | 1 ms | 256 KB |
02-34.txt | WA | 1 ms | 256 KB |
02-35.txt | WA | 1 ms | 256 KB |
02-36.txt | WA | 1 ms | 256 KB |
02-37.txt | WA | 1 ms | 384 KB |
02-38.txt | AC | 2 ms | 640 KB |
02-39.txt | AC | 34 ms | 21604 KB |
02-40.txt | AC | 1 ms | 256 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 |