//*** Bismillah ***//
// It's the evening of another day. And the end of mine...
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#if !defined(ONLINE_JUDGE) and !defined(EVAL)
#include "template/debug.h"
#else
#define d(x...)
#endif
#define ll long long
const ll INF = 1e9;
const ll INFL = 1e18;
const ll MOD = 1e9 + 7;
const ll maxn = 1e6 + 5;
ll n,m,k=0;
#define fr first
#define sc second
#define st pair<ll, map<ll,bool>>
st tree[4*maxn], val;
st merge(st a, st b){
if(a.fr or b.fr) return {1, {}};
ll can = 0;
for(auto [x, val] : b.sc){
if(a.sc.count(x)){
can = 1;
break;
}
a.sc[x]=1;
}
if(can) return {1, {}};
else return a;
}
void upd(ll &x, ll l=1, ll r=n, ll v=1){
if(l == r){
tree[v] = val;
return;
}
ll md = (l+r)>>1;
if(x <= md) upd(x, l, md, v<<1);
else upd(x, md+1, r, v<<1|1);
tree[v] = merge(tree[v<<1], tree[v<<1|1]);
}
st get(ll _l, ll _r, ll l=1, ll r=n, ll v=1){
bool in = _l <= l and r <= _r;
bool ot = _l <= r and l <= _r;
if(in){
return tree[v];
}
if(ot){
ll md = (l+r)>>1;
return merge(
get(_l, _r, l, md, v<<1),
get(_l, _r, md+1, r, v<<1|1)
);
}
return {0, {}};
}
map<ll, map<ll, bool>>memo;
map<ll, bool>gen(ll x){
if(memo.count(x)) return memo[x];
ll org = x;
for(ll i=2;i<=x;i++){
if(x%i == 0){
memo[org][i]=1;
while(x%i == 0) x /= i;
}
}
if(x > 1) memo[org][x]=1;
return memo[org];
}
ll open[maxn];
void _(){
cin>>n>>m;
char c;
for(ll i=0;i<m;i++){
cin>>c;
if(c == 'S'){
ll x;
cin>>x;
if(!open[x]){
val = {0, gen(x)};
upd(x);
open[x] = 1;
}
else{
val = {0, {}};
upd(x);
open[x] = 0;
}
}
else{
ll l, r;
cin>>l>>r;
cout<<(get(l, r).fr ? "DA\n" : "NE\n");
}
}
}
signed main(){
auto testcaseruntime=clock();
cin.tie(0)->sync_with_stdio(0);
ll t=1;
// cin>>t;
while(t--){
_();
}
cerr<<"\n\033[1;31mTime: \033[1;30m"
<<(double)(clock()-testcaseruntime)/1000000<<"\033[1;32m seconds\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |