Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //misaka and elaina will carry me to master
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <utility>
- #include <cassert>
- #include <algorithm>
- #include <vector>
- #include <functional>
- #include <numeric>
- #include <set>
- #include <array>
- #include <queue>
- #include <map>
- #include <chrono>
- #include <random>
- #define ll long long
- #define lb long double
- #define sz(vec) ((int)(vec.size()))
- #define all(x) x.begin(), x.end()
- #define pb push_back
- #define mp make_pair
- #define kill(x, s) {int COND = x; if(COND){ cout << s << "\n"; return ; }}
- #ifdef ONLINE_JUDGE
- #define cerr while(0) cerr
- #endif
- const lb eps = 1e-9;
- const ll mod = 1e9 + 7, ll_max = 1e18;
- //const ll mod = (1 << (23)) * 119 +1, ll_max = 1e18;
- const int MX = 1e6 +10, int_max = 0x3f3f3f3f;
- struct {
- template<class T>
- operator T() {
- T x; std::cin >> x; return x;
- }
- } in;
- using namespace std;
- vector<int> fl;
- int ans[MX];
- int state[MX];
- int n, m, q;
- int low[MX], primes[MX];
- int ind = 1;
- void precomp(){
- for(int i = 2; i<=n; i++){
- if(low[i] == 0){
- primes[ind++] = i;
- for(int j = i; j<=n; j+=i){
- if(!low[j]) low[j] = i;
- }
- }
- }
- }
- void solve(){
- n = in, m = in, q = in;
- precomp();
- for(int i = 1; i<=n; i++){
- fl.pb(n/i);
- }
- sort(all(fl));
- fl.resize(unique(all(fl)) - fl.begin());
- for(int i = 1; i<=n; i++){
- ans[i] = 1;
- }
- if(m < ind){
- for(int j = m+1; j<ind; j++){
- int x = primes[j];
- for(int i : fl){
- ans[i] += ans[i/x];
- }
- state[x] = 1;
- }
- }
- for(int qaq = 1; qaq <= q; qaq++){
- int x = in;
- x = primes[x];
- if(state[x]){ //delete
- reverse(all(fl));
- for(int i : fl){
- ans[i] -= ans[i/x];
- assert(ans[i] > 0);
- }
- reverse(all(fl));
- }else{ //insert
- for(int i : fl){
- ans[i] += ans[i/x];
- }
- }
- state[x] ^= 1;
- cout << n - ans[n] << "\n";
- }
- }
- signed main(){
- cin.tie(0) -> sync_with_stdio(0);
- int T = 1;
- //cin >> T;
- for(int i = 1; i<=T; i++){
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement