結果
問題 |
No.935 う し た ぷ に き あ く ん 笑 ビ - ム
|
ユーザー |
![]() |
提出日時 | 2019-11-29 22:25:22 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 58 ms / 2,000 ms |
コード長 | 1,891 bytes |
コンパイル時間 | 1,639 ms |
コンパイル使用メモリ | 169,808 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-14 05:49:18 |
合計ジャッジ時間 | 4,164 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 58 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef vector<int> vi; typedef vector<ll> vl; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define REP(i, n) for(int i=0; i<(n); ++i) #define FOR(i, a, b) for(int i=(a); i<(b); ++i) #define FORR(i, a, b) for(int i=(b)-1; i>=(a); --i) #define DEBUG(x) cout<<#x<<": "<<(x)<<'\n' #define DEBUG_VEC(v) cout<<#v<<":";REP(i, v.size())cout<<' '<<v[i];cout<<'\n' #define ALL(a) (a).begin(), (a).end() template<typename T> inline void CHMAX(T& a, const T b) {if(a<b) a=b;} template<typename T> inline void CHMIN(T& a, const T b) {if(a>b) a=b;} constexpr ll MOD=1000000007ll; // constexpr ll MOD=998244353ll; #define FIX(a) ((a)%MOD+MOD)%MOD const double EPS=1e-11; #define EQ0(x) (abs((x))<EPS) #define EQ(a, b) (abs((a)-(b))<EPS) int main(){ ios::sync_with_stdio(false); cin.tie(0); // cout<<setprecision(10)<<fixed; int n; string s; ll a[2525], Q, b[2525]; cin>>n>>s; REP(i, n){ cin>>a[i]; b[i]=a[i]; } string t=s; reverse(ALL(t)); reverse(b, b+n); cin>>Q; while(Q--){ ll k; cin>>k; int ans=0; { int r=0, cnt=0; ll sum=0; REP(l, n){ while((r<=l) || (r<n && sum+a[r]<=k)){ sum+=a[r]; if(s[r]=='E'){ ++cnt; } ++r; } if(sum<=k){ CHMAX(ans, cnt); } if(s[l]=='E'){ --cnt; } sum-=a[l]; } } { int r=0, cnt=0; ll sum=0; REP(l, n){ while((r<=l) || (r<n && sum+b[r]<=k)){ sum+=b[r]; if(t[r]=='E'){ ++cnt; } ++r; } if(sum<=k){ CHMAX(ans, cnt); } if(t[l]=='E'){ --cnt; } sum-=b[l]; } } cout<<ans<<'\n'; } return 0; }