結果
問題 | No.2716 Falcon Method |
ユーザー |
![]() |
提出日時 | 2024-04-05 21:41:05 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 366 ms / 2,000 ms |
コード長 | 806 bytes |
コンパイル時間 | 641 ms |
コンパイル使用メモリ | 67,984 KB |
実行使用メモリ | 10,020 KB |
最終ジャッジ日時 | 2024-10-01 01:55:50 |
合計ジャッジ時間 | 7,183 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 28 |
ソースコード
#include <iostream> #include <string> #include <vector> #define rep(i, n) for(i = 0; i < n; i++) #define int long long using namespace std; int n, q; string s; int cntR[400001], cntD[400001]; int solve(int h, int w, int p) { int ng = 0, ok = 1e+10, mid; while (ok - ng >= 2) { mid = (ng + ok) / 2; int cR = (mid / n) * cntR[n] + cntR[p + mid % n] - cntR[p]; int cD = (mid / n) * cntD[n] + cntD[p + mid % n] - cntD[p]; if (cR >= w || cD >= h) { ok = mid; } else { ng = mid; } } return (p + ok) % n; } signed main() { int i; cin >> n >> q >> s; rep(i, 2 * n) cntR[i + 1] = cntR[i] + (s[i % n] == 'R'); rep(i, 2 * n) cntD[i + 1] = cntD[i] + (s[i % n] == 'D'); rep(i, q) { int h, w, p; cin >> h >> w >> p; int ans = solve(h, w, p); cout << ans << endl; } return 0; }