#include <algorithm>
#include <cstdint>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    long long n, k;
    cin >> n >> k;
    vector<long long> w(n);

    for (int i = 0; i < n; i++) {
        cin >> w[i];
    }
    string s;
    cin >> s;

    for (int i = 0; i < n; i++) {
        if (s[i] == '1') w[i] = w[i] * 95;
        else w[i] = w[i] * 100;
    }
    sort(w.begin(), w.end());
    int ans = 0;
    k = k * 100;
    if (k >= w[0]) {
        for (int i = 0; i < n; i++) {
            k = k - w[i];
            if (k >= 0) {
                ans++;
            } else {
                break;
            }
        }
    }
    cout << ans << endl;
    return 0;
}

C++ 常见数字类型的范围

以下是 C++ 中常见数字类型的范围,用 10 的幂次表示:

  1. int(32 位有符号整数):范围:-2,147,483,648 到 2,147,483,647近似:-2.147 × 10^9 到 2.147 × 10^9
  2. long long(64 位有符号整数):范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807近似:-9.223 × 10^18 到 9.223 × 10^18
  3. unsigned int(32 位无符号整数):范围:0 到 4,294,967,295近似:0 到 4.295 × 10^9
  4. unsigned long long(64 位无符号整数):范围:0 到 18,446,744,073,709,551,615近似:0 到 1.845 × 10^19
  5. short(16 位有符号整数):范围:-32,768 到 32,767近似:-3.2768 × 10^4 到 3.2767 × 10^4
  6. unsigned short(16 位无符号整数):范围:0 到 65,535近似:0 到 6.5535 × 10^4
  7. float(32 位浮点数):范围:约 -3.4 × 10^38 到 3.4 × 10^38精度:约 7 位十进制数字
  8. double(64 位浮点数):范围:约 -1.8 × 10^308 到 1.8 × 10^308精度:约 15-16 位十进制数字

注意

  • 对于代码,建议使用 long long 替代 int 来避免溢出,因为 k 和 w[i] 乘以 100 后可能超过 2 × 10^9。