#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll sieve[10001000];
ll stones[10001000];
ll in[1001000];
ll t_ans[1001000];
unordered_map<ll, unordered_map<ll, ll>> res;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n, q;
cin >> n >> q;
ll max_in = -1LL;
for(ll i = 0LL; i < q; i++) {
cin >> in[i];
max_in = max(max_in, in[i]);
}
vector<ll> primes;
for(ll i = 2; i <= max_in + 1; i++) {
if(sieve[i]) {
continue;
}
primes.push_back(i);
for(ll j = i*i; j <= max_in + 1; j += i) {
sieve[j] = i;
}
}
t_ans[0] = 1LL;
ll ans = 0LL;
for(ll i = 0LL; i < q; i++) {
ll a = in[i];
stones[a] ^= 1LL;
ll m[2] = {-1LL, 1LL};
ll s = m[stones[a]];
for(auto i: primes) {
t_ans[res[i][a%i]]--;
res[i][a%i] += s;
t_ans[res[i][a%i]]++;
if(t_ans[ans + 1]) {
ans++;
} else if(t_ans[ans] == 0LL) {
ans--;
}
}
cout << ans << "\n";
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <bits/stdc++.h> using namespace std; typedef long long ll; ll sieve[10001000]; ll stones[10001000]; ll in[1001000]; ll t_ans[1001000]; unordered_map<ll, unordered_map<ll, ll>> res; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n, q; cin >> n >> q; ll max_in = -1LL; for(ll i = 0LL; i < q; i++) { cin >> in[i]; max_in = max(max_in, in[i]); } vector<ll> primes; for(ll i = 2; i <= max_in + 1; i++) { if(sieve[i]) { continue; } primes.push_back(i); for(ll j = i*i; j <= max_in + 1; j += i) { sieve[j] = i; } } t_ans[0] = 1LL; ll ans = 0LL; for(ll i = 0LL; i < q; i++) { ll a = in[i]; stones[a] ^= 1LL; ll m[2] = {-1LL, 1LL}; ll s = m[stones[a]]; for(auto i: primes) { t_ans[res[i][a%i]]--; res[i][a%i] += s; t_ans[res[i][a%i]]++; if(t_ans[ans + 1]) { ans++; } else if(t_ans[ans] == 0LL) { ans--; } } cout << ans << "\n"; } return 0; } |
English