求Hack,悬关
查看原帖
求Hack,悬关
1025321
midsummer_zyl楼主2024/9/4 10:54

丑陋的代码如下:

#include <bits/stdc++.h>
#define ll long long
#define lowbit(i) (i & -i)
#define pii pair <int, int>
using namespace std;
struct node {
	int siz;
	map <int, int> arr;
	// #1 : siz   #2 : array (map)
} ;
map <char, node> s;
bool fg, kkk; int id;
inline int dfs(string a, int l, int r) {
	if (isdigit(a[l])) {
		int num = 0;
		for (int i = l; i <= r; ++i)
			num = num * 10 + a[i] - '0';
		return num;
	}
	if (isalpha(a[l])) {
		int pos = dfs(a, l + 2, r - 1);
		if (pos >= s[a[l]].siz)
			fg = false;
		if (l == 0) id = pos;
		if (pos <= s[a[l]].siz && !s[a[l]].arr.count(pos))
			kkk = false;
		return s[a[l]].arr[pos];
	}
	return 0;
}
inline void solve() {
	s.clear();
	string x;
	while (true) {
		bool vis = true;
		int ans = 0;
		bool shuchu = false;
		while (cin >> x) {
			if (vis && x == ".") return ;
			if (x == ".") break;
			ans ++;
			vis = false;
			kkk = fg = true;
//			cout << s['a'].arr.count(2) << '\n';
			if (x.find("=") == -1) {
				int num = 0;
				for (int i = 2; i < x.size() - 1; ++i)
					num = num * 10 + x[i] - '0';
//				cout << x[0] << " " << num << "\n";
				s[x[0]].siz = num;
			} else {
				string a = x.substr(0, x.find("="));
				string b = x.substr(x.find("=") + 1);
				if (b[0] >= '0' && b[0] <= '9') {
					// number
					int num = 0;
					for (int i = 0; i < b.size(); ++i)
						num = num * 10 + b[i] - '0';
					id = 0;
					dfs(a, 0, a.size() - 1);
					s[a[0]].arr[id] = num;
					if (!fg) cout << ans << "\n", shuchu = true;
				} else {
					id = 0;
					fg = true; kkk = true;
					dfs(b, 0, b.size() - 1);
					int kk = id; id = 0;
					bool sb = false;
					if (!fg || !kkk) {
						cout << ans << "\n";
						shuchu = true;
						sb = true;
					}
					fg = true; kkk = true;
					dfs(a, 0, a.size() - 1);
					s[a[0]].arr[kk] = s[b[0]].arr[id];
					if (sb) continue;
					if (!fg) {
						cout << ans << "\n";
						shuchu = true;
						continue;
					}
					fg = true; kkk = true;
				}
			}
		}
		if (!shuchu) cout << "0\n";
	}
}
int main() {
    ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	solve();
    return 0;
}

自知代码又长又臭,不求调,只求Hack!!

2024/9/4 10:54
加载中...