#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 的幂次表示:
- int(32 位有符号整数):范围:-2,147,483,648 到 2,147,483,647近似:-2.147 × 10^9 到 2.147 × 10^9
- 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
- unsigned int(32 位无符号整数):范围:0 到 4,294,967,295近似:0 到 4.295 × 10^9
- unsigned long long(64 位无符号整数):范围:0 到 18,446,744,073,709,551,615近似:0 到 1.845 × 10^19
- short(16 位有符号整数):范围:-32,768 到 32,767近似:-3.2768 × 10^4 到 3.2767 × 10^4
- unsigned short(16 位无符号整数):范围:0 到 65,535近似:0 到 6.5535 × 10^4
- float(32 位浮点数):范围:约 -3.4 × 10^38 到 3.4 × 10^38精度:约 7 位十进制数字
- double(64 位浮点数):范围:约 -1.8 × 10^308 到 1.8 × 10^308精度:约 15-16 位十进制数字
注意
- 对于代码,建议使用 long long 替代 int 来避免溢出,因为 k 和 w[i] 乘以 100 后可能超过 2 × 10^9。