WA 求调
查看原帖
WA 求调
765958
lottle1212楼主2023/7/30 09:33

WA on #1 #3 #4 #11

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll N = 1e5 + 10, mod = 1e5 + 7;
ll n, m, head[N], cnt, ans, a[N][40];
struct Edge { ll nxt, to; } e[N << 1];
void add(ll u, ll v) { e[++ cnt] = {head[u], v}; head[u] = cnt; }
ll rd() {
	ll sum = 0; bool f = 0; char ch = getchar();
	while (ch < '0' || ch > '9') f |= ch == '-', ch = getchar();
	while (ch >= '0' && ch <= '9') sum = (sum << 1) + (sum << 3) + (ch ^ 48), ch = getchar();
	return f ? -sum : sum;
}
bool check(ll x, ll y) {
	for (ll i = 1; i < m; ++ i)
		if (a[x][i] - a[x][i - 1] != a[y][i] - a[y][i - 1])
			return false;
	return true;
}
signed main() {
//	freopen("P1360_1.in", "r", stdin);
//	freopen("P1360_1.out", "w", stdout);
	ll n = rd(), m = rd();
	for (ll i = 1, x; i <= n; ++ i) {
		x = rd();
		for (ll j = 0; j < m; ++ j) a[i][j] = a[i - 1][j] + ((x >> j) & 1);
	}
	add(0, 0);
	for (ll i = 1, h = 0; i <= n; ++ i, h = 0) {
		bool flag = true;
		for (ll j = 1; j < m; ++ j) h = ((h + a[i][j] - a[i][j - 1]) * j % mod + mod) % mod;
		for (ll j = head[h], k; j; j = e[j].nxt)
//		for (ll j = 0; j < i; ++ j)
			if (check(i, j)) {
				ans = max(ans, i - j), flag = false;
//				if (i - e[j].to == 99502) printf("%lld %lld\n", i, e[j].to);
			}
		if (flag) add(h, i);
	}
	printf("%lld\n", ans);
	return 0;
}
2023/7/30 09:33
加载中...