結果
問題 | No.1021 Children in Classrooms |
ユーザー |
![]() |
提出日時 | 2020-04-10 22:26:04 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 90 ms / 2,000 ms |
コード長 | 1,007 bytes |
コンパイル時間 | 739 ms |
コンパイル使用メモリ | 74,952 KB |
最終ジャッジ日時 | 2025-01-09 16:18:13 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#include <cassert> #include <vector> #include <iostream> using namespace std; int main(){ int N, M; cin >> N >> M; vector<int> A(N); for(int i = 0; i < N; ++i) cin >> A[i]; string s; cin >> s; int l = 0, r = N-1, lc = 0, rc = 0; for(auto c : s){ if(c == 'L'){ if(lc){ --lc; ++r; continue; } if(l == N-1) continue; ++l; ++rc; A[l] += A[l-1]; A[l-1] = 0; }else{ if(rc){ --rc; --l; continue; } if(r == 0) continue; --r; ++lc; A[r] += A[r+1]; A[r+1] = 0; } } cerr << lc << " " << rc << endl; cerr << l << " " << r << endl; vector<int> B; for(int i = 0; i < lc; ++i) B.push_back(0); for(int i = l; i <= r; ++i){ if(i >= 0 and i < N) B.push_back(A[i]); else B.push_back(0); } for(int i = 0; i < rc; ++i) B.push_back(0); assert(B.size() == N); for(int i = 0; i < N; ++i) cout << B[i] << (i+1 < N ? " " : "\n"); }