\(a_{0}\) を決めれば, \(a\) の残りは一意に決まる. \((i,j) \in N \times M\) に対して, \(a_{i} = x_{j}\) となる \(a_{0}\) の条件を, \(x, s\) を用いて表せばよい.
\(a_{0}\) を固定したときに, よい\((i,j\) の組に印をつけていく. 印の個数が最大にするが今回の問題. なぜなら,印がつくのは各\(i\) に対して, \(j\) は高々1個だから. つまり, \(i\) の個数を数えるのと,印の個数を数えるのは同じ.
使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"
int main() {
ll n, m;
cin >> n >> m;
vll s(n-1); cinv(s);
vll x(m); cinv(x);
map<ll,ll> mp;
rep(j,m){
ll sig = 1;
ll t = 0;
rep(i,n){
ll z = sig*(x[j] - t);
mp[z]++;
if(i == n-1) break;
t = s[i] - t;
sig *= -1;
}
}
ll ans = 0;
for(auto [_,cnt]: mp){
chmax(ans, cnt);
}
cout << ans << endl;
return 0;
}