結果
| 問題 | No.935 う し た ぷ に き あ く ん 笑 ビ - ム |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-11-29 22:18:53 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 10 ms / 2,000 ms |
| コード長 | 957 bytes |
| 記録 | |
| コンパイル時間 | 829 ms |
| コンパイル使用メモリ | 76,908 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-14 05:44:59 |
| 合計ジャッジ時間 | 2,316 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 58 |
ソースコード
#include<iostream>
#include<vector>
#include<map>
using namespace std;
typedef long long ll;
int main(){
int n;
string s;
cin >> n >> s;
vector<int> e(n, 0);
for(int i = 0; i < n; i++){
if(i) e[i] += e[i-1];
e[i] += s[i]=='E';
}
vector<ll> sum(n);
for(int i = 0; i < n; i++){
cin >> sum[i];
if(i) sum[i] += sum[i-1];
}
vector<ll> need(n+1, 1ll<<60);
need[0] = 0;
for(int i = 0; i < n; i++){
for(int j = i; j < n; j++){
int tmp = e[j] - (i==0 ? 0 : e[i-1]);
if(tmp == 0) continue;
ll p = sum[j] - (i==0 ? 0 : sum[i-1]);
need[tmp] = min(need[tmp], p);
}
}
int q;
cin >> q;
while(q-- > 0){
ll k;
cin >> k;
for(int j = n; j >= 0; j--){
if(need[j] <= k){
cout << j << endl;
break;
}
}
}
return 0;
}