Submission #994282
Source Code Expand
#include<bits/stdc++.h> using namespace std; #define int long long template< class T > struct ConvexHullTrick { struct Fraction { T a, b; Fraction(T a, T b) : a(a), b(b) { if(b < 0) a *= -1, b *= -1; } bool operator<(const Fraction &r) const { return a * r.b < r.a * b; } }; struct Line { T a, b; Line(T a, T b) : a(a), b(b) {} T operator()(T x) const { return a * x + b; } bool operator<(const Line &r) const { return a != r.a ? a < r.a : b < r.b; } }; set< Line > ls; set< pair< Fraction, Line>> ip; ConvexHullTrick() { ls.emplace(numeric_limits< T >::min(), 0); } Fraction intersection(Line l1, Line l2) { return Fraction(-(l2.b - l1.b), l2.a - l1.a); } bool need(Line l1, Line l2, Line l3) { return intersection(l1, l2) < intersection(l2, l3); } void add(T a, T b) { Line c(a, b); auto r = ls.lower_bound(c); auto l = prev(r); if(l != ls.begin() && r != ls.end()) { if(need(*l, c, *r)) { ip.erase(make_pair(intersection(*l, *r), *l)); } else return; } while(l != ls.begin() && prev(l) != ls.begin() && !need(*prev(l), *l, c)) { ip.erase(make_pair(intersection(*prev(l), *l), *prev(l))); ls.erase(l--); } while(r != ls.end() && next(r) != ls.end() && !need(c, *r, *next(r))) { ip.erase(make_pair(intersection(*r, *next(r)), *r)); ls.erase(r++); } if(l != ls.begin()) { ip.emplace(intersection(*l, c), *l); } if(r != ls.end()) { ip.emplace(intersection(c, *r), c); } ls.emplace(c); } T maximum(T x) { auto it = ip.lower_bound(make_pair(Fraction(x, 1), Line(numeric_limits< T >::min(), numeric_limits< T >::min()))); Line l = it != ip.end() ? it->second : *ls.rbegin(); return l(x); } }; const int INF = 1 << 30; int N, A; int dp1[1000001]; int dp2[1000001]; signed main() { cin >> N >> A; if(N == 1) { cout << 1 << endl; return (0); } dp1[0] = 0; dp1[1] = 1; dp2[0] = 1; dp2[1] = 1; int syaku = 1; ConvexHullTrick< long long > cht; cht.add(1, 0); //cht.add(1, -1); for(int j = 2; true; j++) { /* while(dp2[syaku] * (j - syaku) <= dp2[syaku + 1] * (j - (syaku + 1))) { syaku = (syaku); } */ dp1[j] = cht.maximum(j); //dp2[syaku] * (j - syaku); dp2[j] = max(dp2[j - 1], dp1[max(1LL, j - A)]); cht.add(dp2[j], -dp2[j] * j); if(dp1[j] >= N) { cout << j << endl; return (0); } } }
Submission Info
Submission Time | |
---|---|
Task | E - Cookies |
User | ei13333 |
Language | C++14 (GCC 5.4.1) |
Score | 500 |
Code Size | 2691 Byte |
Status | WA |
Exec Time | 311 ms |
Memory | 37760 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 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01-01.txt | AC | 3 ms | 256 KB |
01-02.txt | AC | 3 ms | 256 KB |
01-03.txt | AC | 3 ms | 256 KB |
01-04.txt | AC | 3 ms | 256 KB |
01-05.txt | AC | 3 ms | 256 KB |
01-06.txt | AC | 3 ms | 256 KB |
01-07.txt | AC | 3 ms | 256 KB |
01-08.txt | AC | 3 ms | 256 KB |
01-09.txt | AC | 3 ms | 256 KB |
01-10.txt | AC | 3 ms | 256 KB |
01-11.txt | AC | 3 ms | 256 KB |
01-12.txt | AC | 165 ms | 16000 KB |
01-13.txt | AC | 165 ms | 15872 KB |
01-14.txt | AC | 3 ms | 256 KB |
01-15.txt | AC | 3 ms | 256 KB |
01-16.txt | AC | 3 ms | 256 KB |
01-17.txt | AC | 3 ms | 256 KB |
01-18.txt | AC | 3 ms | 256 KB |
01-19.txt | AC | 3 ms | 256 KB |
01-20.txt | AC | 3 ms | 256 KB |
01-21.txt | AC | 3 ms | 256 KB |
01-22.txt | AC | 3 ms | 256 KB |
01-23.txt | AC | 3 ms | 256 KB |
01-24.txt | AC | 3 ms | 256 KB |
01-25.txt | AC | 3 ms | 256 KB |
01-26.txt | AC | 3 ms | 256 KB |
02-01.txt | AC | 3 ms | 256 KB |
02-02.txt | WA | 3 ms | 256 KB |
02-03.txt | WA | 3 ms | 256 KB |
02-04.txt | AC | 3 ms | 256 KB |
02-05.txt | WA | 3 ms | 256 KB |
02-06.txt | AC | 3 ms | 256 KB |
02-07.txt | WA | 3 ms | 256 KB |
02-08.txt | WA | 3 ms | 256 KB |
02-09.txt | WA | 3 ms | 256 KB |
02-10.txt | WA | 3 ms | 256 KB |
02-11.txt | WA | 3 ms | 256 KB |
02-12.txt | WA | 3 ms | 256 KB |
02-13.txt | AC | 3 ms | 256 KB |
02-14.txt | WA | 3 ms | 256 KB |
02-15.txt | WA | 3 ms | 256 KB |
02-16.txt | WA | 3 ms | 384 KB |
02-17.txt | WA | 3 ms | 384 KB |
02-18.txt | AC | 3 ms | 384 KB |
02-19.txt | AC | 4 ms | 640 KB |
02-20.txt | AC | 7 ms | 1408 KB |
02-21.txt | WA | 44 ms | 7168 KB |
02-22.txt | WA | 165 ms | 15872 KB |
02-23.txt | WA | 165 ms | 15872 KB |
02-24.txt | WA | 165 ms | 15872 KB |
02-25.txt | AC | 3 ms | 256 KB |
02-26.txt | AC | 3 ms | 256 KB |
02-27.txt | WA | 3 ms | 256 KB |
02-28.txt | AC | 3 ms | 256 KB |
02-29.txt | WA | 3 ms | 256 KB |
02-30.txt | WA | 3 ms | 256 KB |
02-31.txt | WA | 3 ms | 256 KB |
02-32.txt | AC | 3 ms | 256 KB |
02-33.txt | AC | 3 ms | 256 KB |
02-34.txt | WA | 3 ms | 256 KB |
02-35.txt | WA | 3 ms | 256 KB |
02-36.txt | WA | 3 ms | 256 KB |
02-37.txt | WA | 4 ms | 640 KB |
02-38.txt | AC | 10 ms | 1792 KB |
02-39.txt | WA | 311 ms | 37760 KB |
02-40.txt | WA | 165 ms | 15872 KB |
sample-01.txt | AC | 3 ms | 256 KB |
sample-02.txt | WA | 165 ms | 15872 KB |
sample-03.txt | AC | 3 ms | 256 KB |