結果

問題 No.3389 k-Days Later
コンテスト
ユーザー biotea
提出日時 2025-12-02 22:32:43
言語 C++17
(gcc 13.3.0 + boost 1.89.0)
結果
AC  
実行時間 532 ms / 2,000 ms
コード長 928 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,044 ms
コンパイル使用メモリ 198,116 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-12-02 22:33:11
合計ジャッジ時間 26,620 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

// #include <atcoder/all>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr ll inf = (1LL << 61);
ll dx[8] = {0, 1, 0, -1, 1, -1, -1, 1};
ll dy[8] = {-1, 0, 1, 0, 1, 1, -1, -1};
#define rep(i, n) for (ll i = 0; i < (ll)(n); ++i)
#define REP(i, init, n) for (ll i = (ll)init; i < (ll)(n); ++i)

int main() {
  ll n;
  cin >> n;
  vector<ll> d(n);
  vector<ll> s(2 * n + 1, 0);
  rep(i, n) cin >> d[i];
  rep(i, n) s[i + 1] = s[i] + d[i];
  rep(i, n) s[i + n + 1] = s[i + n] + d[i];
  ll sum = 0;
  rep(i, n) sum += d[i];
  ll q;
  cin >> q;
  rep(_, q) {
    ll y, m, D, k;
    cin >> y >> m >> D >> k;
    m--;
    ll ay = y + k / sum;
    ll rem = k % sum;
    auto to = lower_bound(s.begin(), s.end(), s[m] + D + rem) - s.begin() - 1;
    ll am = to % n;
    ll ad = -s[to] + (s[m] + D + rem);
    if (am < m || (am == m && ad < D)) ++ay;
    cout << ay << " " << am + 1 << " " << ad << "\n";
  }
}
0