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
AC × 3
AC × 27
AC × 52
WA × 20
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