結果
問題 |
No.2933 Range ROT Query
|
ユーザー |
|
提出日時 | 2025-05-15 04:27:54 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,419 bytes |
コンパイル時間 | 1,110 ms |
コンパイル使用メモリ | 80,052 KB |
実行使用メモリ | 10,184 KB |
最終ジャッジ日時 | 2025-05-15 04:28:12 |
合計ジャッジ時間 | 16,661 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 2 |
other | AC * 13 WA * 37 |
ソースコード
#include <iostream> #include <string> #include <vector> using namespace std; class SegmentTree { vector<int> lazy; int size; public: SegmentTree(int n) { size = n; lazy.resize(4 * n, 0); } void updateRange(int node, int start, int end, int l, int r, int val) { if (start > end || start > r || end < l) return; if (start >= l && end <= r) { lazy[node] = (lazy[node] + val) % 26; return; } int mid = (start + end) / 2; updateRange(2*node, start, mid, l, r, val); updateRange(2*node+1, mid+1, end, l, r, val); } int query(int node, int start, int end, int idx) { if (start > end) return 0; if (start == end) { return lazy[node]; } int mid = (start + end) / 2; int rot = lazy[node]; if (idx <= mid) { return (rot + query(2*node, start, mid, idx)) % 26; } else { return (rot + query(2*node+1, mid+1, end, idx)) % 26; } } void update(int l, int r, int val) { updateRange(1, 0, size-1, l-1, r-1, val); } int get(int idx) { return query(1, 0, size-1, idx-1); } }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); string S, T; cin >> S >> T; SegmentTree segS(S.length()); SegmentTree segT(T.length()); int Q; cin >> Q; while (Q--) { int queryType; cin >> queryType; if (queryType == 1) { int l, r, x; cin >> l >> r >> x; segS.update(l, r, x); } else if (queryType == 2) { int l, r, x; cin >> l >> r >> x; segT.update(l, r, x); } else if (queryType == 3) { int p; cin >> p; char actualS = 'a' + ((S[p-1] - 'a' + segS.get(p)) % 26); char actualT = 'a' + ((T[p-1] - 'a' + segT.get(p)) % 26); if (actualS > actualT) { cout << "Greater" << endl; } else if (actualS < actualT) { cout << "Lesser" << endl; } else { cout << "Equals" << endl; } } } return 0; }