結果
| 問題 |
No.2716 Falcon Method
|
| コンテスト | |
| ユーザー |
hongrock
|
| 提出日時 | 2024-04-05 21:59:19 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,328 bytes |
| コンパイル時間 | 2,327 ms |
| コンパイル使用メモリ | 193,376 KB |
| 最終ジャッジ日時 | 2025-02-20 21:21:16 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 20 WA * 8 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
#define pb emplace_back
#define mp make_pair
using ll = long long;
using pii = pair<int,int>;
constexpr int mod = 998244353;
constexpr int inf = 0x3f3f3f3f;
constexpr int N = 4e5 + 10;
int n, Q, d[N], r[N];
string s;
int calc(int *a, int m, int p){
int r = m % a[n-1];
if(r == 0) r = a[n-1];
if(p != 0) r += a[p-1];
return lower_bound(a, a+n*2, r) - a + 1;
}
int solve(int h, int w, int p){
if(d[n-1] == 0){
return calc(r, w, p) % n;
}
if(r[n-1] == 0){
return calc(d, h, p) % n;
}
int c1, c2;
if(h % d[n-1] == 0){
c1 = calc(d, h, p) - p + (h / d[n-1] - 1) * n;
} else {
c1 = calc(d, h, p) - p + h / d[n-1] * n;
}
if(w % r[n-1] == 0){
c2 = calc(r, w, p) - p + (w / r[n-1] - 1) * n;
} else {
c2 = calc(r, w, p) - p + w / r[n-1] * n;
}
if(c1 < c2) return calc(d, h, p) % n;
return calc(r, w, p) % n;
}
void _main(){
cin >> n >> Q >> s;
for(int i=0; i<n; ++i){
if(s[i] == 'D'){
d[i] = d[i+n] = 1;
} else {
r[i] = r[i+n] = 1;
}
}
for(int i=1; i<n*2; ++i){
d[i] += d[i-1];
r[i] += r[i-1];
}
int h, w, p;
while(Q--){
cin >> h >> w >> p;
cout << solve(h, w, p) << '\n';
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
_main();
return 0;
}
hongrock