結果
問題 |
No.1405 ジグザグロボット
|
ユーザー |
![]() |
提出日時 | 2020-12-08 22:21:13 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,665 bytes |
コンパイル時間 | 1,742 ms |
コンパイル使用メモリ | 176,672 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-16 23:26:45 |
合計ジャッジ時間 | 10,810 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 9 WA * 26 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main(){ int N, X, Y; cin >> N >> X >> Y; string S; cin >> S; int Scnt = 0; for (int i = 0; i < N; i++){ if (S[i] == 'S'){ Scnt++; if (Scnt > Y){ S[i] == '.'; } } } if (Y > Scnt){ cout << -1 << endl; } else { vector<string> T; T.push_back(""); for (int i = 0; i < N; i++){ if (S[i] == 'L' || S[i] == 'R'){ T.back() += S[i]; } else if (S[i] == 'S'){ T.push_back(""); } } int cnt = T.size(); vector<int> left(cnt), right(cnt), sum(cnt); for (int i = 0; i < cnt; i++){ int sz = T[i].size(); left[i] = 0, right[i] = 0, sum[i] = 0; for (int j = 0; j < sz; j++){ if (T[i][j] == 'L'){ left[i]--; right[i]--; sum[i]--; } if (T[i][j] == 'R'){ left[i]++; right[i]++; sum[i]++; } left[i] = min(left[i], 0); right[i] = max(right[i], 0); } } vector<pair<int, int>> ob; int currX = 0; for (int i = 0; i < cnt; i++){ if (currX + right[i] <= X){ ob.push_back(make_pair(currX - 1, i)); currX += right[i]; } else if (currX == X){ ob.push_back(make_pair(currX - 1, i)); ob.push_back(make_pair(currX + 1, i)); } else { ob.push_back(make_pair(currX - 1 - (X - currX - right[i]), i)); } } if (Y < Scnt){ ob.push_back(make_pair(X, Y + 1 )); } int M = ob.size(); cout << M << endl; for (int i = 0; i < M; i++){ cout << ob[i].first << ' ' << ob[i].second << endl; } } }