Submission #993345


Source Code Expand

/* -------------------------------- Template -------------------------------- */

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <locale>
#include <iostream>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <string>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

#define REP(i,n) for(int i=0;i<(int)(n);i++)
#define ALL(x) (x).begin(),(x).end()

using ll = long long;
using ld = long double;

template <typename T> T &chmin(T &a, const T &b) { return a = std::min(a, b); }
template <typename T> T &chmax(T &a, const T &b) { return a = std::max(a, b); }

template<typename T> constexpr T inf = [](){ assert(false); };
// template<> constexpr int inf<int> = 1e9;
// template<> constexpr ll inf<ll> = 1e18;
// template<> constexpr ld inf<ld> = 1e30;

struct yes_no : std::numpunct<char> {
  string_type do_truename()  const { return "YES"; }
  string_type do_falsename() const { return "NO"; }
};

void solve();

int main() {
  std::locale loc(std::locale(), new yes_no);
  std::cout << std::boolalpha << std::setprecision(12) << std::fixed;
  std::cout.imbue(loc);
  solve();
  return 0;
}

using namespace std;

/* -------------------------------- Library -------------------------------- */

template<class Data>
struct ConvexHullTrick {
  deque<pair<Data, Data>> l;
  bool check(pair<Data, Data> l3) {
    const auto l1 = *prev(end(l), 2);
    const auto l2 = *prev(end(l), 1);
    Data a = (l2.first - l1.first) * (l3.second - l2.second);
    Data b = (l2.second - l1.second) * (l3.first - l2.first);
    return a >= b;
  }
  void add(Data a, Data b) {
    pair<Data, Data> n(a, b);
    while ((int)l.size() >= 2 && check(n)) l.pop_back();
    l.emplace_back(n);
  }
  Data f(int k, Data x) {
    return l[k].first * x + l[k].second;
  }
  Data query(Data x){
    while ((int)l.size() >= 2 && f(0, x) >= f(1, x)) l.pop_front();
    return f(0, x);
  }
};
// template<class Data>
// struct ConvexHullTrick {
//   deque<pair<Data, Data>> l;
//   bool check(pair<Data, Data> l3) {
//     const auto l1 = *prev(end(l), 2);
//     const auto l2 = *prev(end(l), 1);
//     Data a = (l2.first - l1.first) * (l3.second - l2.second);
//     Data b = (l2.second - l1.second) * (l3.first - l2.first);
//     return a >= b;
//   }
//   void add(Data a, Data b) {
//     pair<Data, Data> n(a, b);
//     while ((int)l.size() >= 2 && check(n)) l.pop_back();
//     l.emplace_back(n);
//   }
//   Data f(int k, Data x) { return l[k].first * x + l[k].second; }
//   pair<bool,Data> next(int x) {
//     if (l.size() <= 1) return make_pair(false, 0);
//     int b = l[1].second - l[0].second;
//     int a = l[0].first - l[1].first;
//     return make_pair(true, b / a);
//   }
//   Data query(Data x){
//     while ((int)l.size() >= 2 && f(0, x) >= f(1, x)) l.pop_front();
//     return f(0, x);
//   }
// };

/* ---------------------------------- Main ---------------------------------- */

ll dp[4000005];
 
void solve() {
  ll N, A;
  cin >> N >> A;
  ConvexHullTrick<__int128> st;
  st.add(-1, 0);
  int sa = 0;
  REP(i,min(N,4000000LL)) {
    sa = i;
    dp[i] = st.query(i);
    if (dp[i] <= -N) { cout << i << endl; return; }
    // cout << -dp[i] << endl;
    ll a = dp[i];
    ll b = (i + A) * -a;
    if (b > 1e18) break;
    st.add(a, b);
  }
  ll lb = sa, ub = N + 1;
  while (ub > lb + 1) {
    ConvexHullTrick<__int128> nst = st;
    ll mid = (lb + ub) / 2;
    // cout << mid << endl;
    // cout << ll(nst.query(mid)) << endl;
    if (nst.query(mid) <= -N) ub = mid; else lb = mid;
  }
  cout << ub << endl;
  return;
}

Submission Info

Submission Time
Task E - Cookies
User asi1024
Language C++14 (GCC 5.4.1)
Score 500
Code Size 3991 Byte
Status TLE
Exec Time 2114 ms
Memory 293136 KB

Judge Result

Set Name sample dataset1 dataset2
Score / Max Score 0 / 0 500 / 500 0 / 500
Status
AC × 3
AC × 27
AC × 67
TLE × 2
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 2 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 2 ms 256 KB
01-09.txt AC 2 ms 256 KB
01-10.txt AC 3 ms 256 KB
01-11.txt AC 3 ms 256 KB
01-12.txt AC 73 ms 40708 KB
01-13.txt AC 120 ms 73476 KB
01-14.txt AC 3 ms 256 KB
01-15.txt AC 3 ms 256 KB
01-16.txt AC 2 ms 256 KB
01-17.txt AC 3 ms 256 KB
01-18.txt AC 2 ms 256 KB
01-19.txt AC 2 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 AC 3 ms 256 KB
02-03.txt AC 3 ms 256 KB
02-04.txt AC 3 ms 256 KB
02-05.txt AC 3 ms 256 KB
02-06.txt AC 3 ms 256 KB
02-07.txt AC 3 ms 256 KB
02-08.txt AC 3 ms 256 KB
02-09.txt AC 3 ms 256 KB
02-10.txt AC 2 ms 256 KB
02-11.txt AC 3 ms 256 KB
02-12.txt AC 3 ms 256 KB
02-13.txt AC 3 ms 256 KB
02-14.txt AC 3 ms 256 KB
02-15.txt AC 3 ms 256 KB
02-16.txt AC 3 ms 256 KB
02-17.txt AC 3 ms 256 KB
02-18.txt AC 3 ms 256 KB
02-19.txt AC 3 ms 256 KB
02-20.txt AC 3 ms 384 KB
02-21.txt AC 7 ms 1780 KB
02-22.txt TLE 2107 ms 116888 KB
02-23.txt AC 33 ms 8064 KB
02-24.txt AC 33 ms 8064 KB
02-25.txt AC 3 ms 256 KB
02-26.txt AC 3 ms 256 KB
02-27.txt AC 3 ms 256 KB
02-28.txt AC 3 ms 256 KB
02-29.txt AC 2 ms 256 KB
02-30.txt AC 3 ms 256 KB
02-31.txt AC 2 ms 256 KB
02-32.txt AC 3 ms 256 KB
02-33.txt AC 2 ms 256 KB
02-34.txt AC 3 ms 256 KB
02-35.txt AC 2 ms 256 KB
02-36.txt AC 3 ms 256 KB
02-37.txt AC 3 ms 256 KB
02-38.txt AC 4 ms 512 KB
02-39.txt AC 1035 ms 54088 KB
02-40.txt TLE 2114 ms 293136 KB
sample-01.txt AC 3 ms 256 KB
sample-02.txt AC 33 ms 8064 KB
sample-03.txt AC 3 ms 256 KB