結果

問題 No.2221 Set X
ユーザー stoq
提出日時 2023-01-26 19:14:52
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 802 bytes
コンパイル時間 1,734 ms
コンパイル使用メモリ 195,948 KB
最終ジャッジ日時 2025-02-10 07:03:49
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 17 WA * 23
権限があれば一括ダウンロードができます
コンパイルメッセージ
In file included from /usr/include/c++/13/istream:41,
                 from /usr/include/c++/13/sstream:40,
                 from /usr/include/c++/13/complex:45,
                 from /usr/include/c++/13/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:127,
                 from main.cpp:1:
In member function ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>]’,
    inlined from ‘int main()’ at main.cpp:40:11:
/usr/include/c++/13/ostream:204:25: warning: ‘Mini’ may be used uninitialized [-Wmaybe-uninitialized]
  204 |       { return _M_insert(__n); }
      |                ~~~~~~~~~^~~~~
main.cpp: In function ‘int main()’:
main.cpp:31:18: note: ‘Mini’ was declared here
   31 |   ll Min = 8e18, Mini;
      |                  ^~~~

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define REP(i, m, n) for (int i = m; i < (int)(n); ++i)
#define rep(i, n) REP(i, 0, n)

int main() {
  int n;
  cin >> n;
  vector<int> a(n);
  rep(i, n) cin >> a[i];

  auto f = [&](const ll x) {
    int kind = 1;
    rep(i, n - 1) {
      if (a[i] / x != a[i + 1] / x) kind++;
    }
    return (x + 1) * kind;
  };

  // ternary_search
  ll left = 1, right = n * 2;
  while (right - left > 10) {
    ll t1 = (2 * left + right) / 3;
    ll t2 = (left + 2 * right) / 3;
    if (f(t1) > f(t2))
      left = t1;
    else
      right = t2;
  }
  ll Min = 8e18, Mini;
  for (ll i = left; i <= right; i++) {
    ll fi = f(i);
    if (Min > f(i)) {
      Min = fi;
      Mini = i;
    }
  }

  cout << Mini << "\n";
  cout << Min << "\n";
}
0