rt,写了个 15pts 的部分分,但是 0pts。
#include <bits/stdc++.h>
using namespace std;
long long n;
long long szof(string s) {
if (s == "byte")
return 1;
if (s == "short")
return 2;
if (s == "int")
return 4;
return 8;
}
long long sum[105];
int main() {
cin >> n;
map<string, long long> mp;
map<long long, string> mp2;
sum[0] = 0;
string t, nam, s;
long long addr;
for (long long i = 1, cur = 0, op; i <= n; i++) {
cin >> op;
if (op == 2) {
cin >> t >> nam;
cout << sum[cur] << endl;
mp[nam] = sum[cur];
mp2[cur] = nam;
cur++;
sum[cur] = sum[cur - 1] + szof(t);
}
else if (op == 3) {
cin >> s;
cout << mp[s] << endl;
}
else {
cin >> addr;
if (addr >= s[cur]) {
puts("ERR");
continue;
}
int l = 0, r = cur;
while (r - l > 1) {
int mid = (l + r) / 2;
if (sum[mid] <= addr)
l = mid;
else
r = mid;
}
cout << mp2[r] << endl;
}
}
return 0;
}