Submission #1324185

#TimeUsernameProblemLanguageResultExecution timeMemory
1324185ayazRadio (COCI22_radio)C++20
40 / 110
1604 ms224196 KiB
// I am soo weak :(
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#define line() "author : AyazN";
#endif

#define all(x) (x).begin(), (x).end()
#define isz(x) (int)(x.size())

typedef long double ld;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vpii;

// mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

const int sz = 1000001, inf = 1000000000, LOG = 20;
const ll mod = 1000000007, INF = 1000000000000000000;

vector<int> divs[sz];
set<int> divNums;
int id[sz], spf[sz];
bool p[sz];

struct BIT {
  unordered_map<int, int> tree;
  int n;
  void init(int _n) {
    n = _n;
  }
  void clear() {
    tree.clear();
  }
  void add(int x, int v) {
    for (;x <= n; x += (x & -x)) 
      tree[x] += v;    
  }
  void updatePoint(int x, int val) {
    add(x, val);
  }
  int sumPoint(int x) {
    int sum = 0;
    for (;x > 0; x -= (x & -x)) sum += tree[x];
    return sum;
  }
  int sum(int l, int r) {
    return sumPoint(r) - sumPoint(l - 1);
  }
};
void run_case(int tc) {
  int n, q; cin >> n >> q;

  memset(spf, -1, sizeof(spf));
  memset(p, 1, sizeof(p));
  p[0] = p[1] = 0;
  for (int i = 2; i <= n; i++) {
    if (!p[i]) continue;

    for (int j = i; j <= n; j += i) {
      if (spf[j] == -1) {
        spf[j] = i;
        p[j] = 0;
      }
    }
    p[i] = 1;
  }

  unordered_map<int, BIT> st;
  vector<int> cnt(n + 1);

  while (q--) {
    char t; cin >> t;
    if (t == 'S') {
      int x; cin >> x;
      int pos = x;
      set<int> seen;
      while (x != 1) {
        int i = spf[x];
        x /= i;
        if (seen.find(i) != seen.end()) continue;
        seen.insert(i);

        if (st.count(i) == 0) st[i].init(n);

        int val = st[i].sum(pos, pos);
        if (val == 1)  {
          st[i].updatePoint(pos, -1);
          cnt[i]--;
          if (cnt[i] == 0) {
            divNums.erase(divNums.find(i));
            st.erase(st.find(i));
          }
        } else {
          st[i].updatePoint(pos, 1);
          cnt[i]++;
          divNums.insert(i);
        }
      }
    } else {
      int l, r; cin >> l >> r;
      auto ok = false;
      debug(divNums, cnt);
      for (auto d : divNums) {
        if (st[d].sum(l, r) >= 2) {
          ok = true;
          break;
        }
      }
      cout << (ok ? "DA" : "NE") << '\n';
    }
  }
}
void precompute() {}
signed main() {
#ifdef LOCAL
  // freopen("err.log", "w", stderr);
#endif
  precompute();
  int t = 1; // cin >> t;
  for (int tc = 1; tc <= t; tc++) {
    run_case(tc);
  }
}

/*
                                                0:                              
                                               0$P:                             
                                           ~~ wPPPI:                            
                                        "~:~ .w$$$PI:  .                        
                                      v~++:  w$$P$Pcc: ~~                       
                                    !vv+::~ w$$$P$$cc: ~!~                      
                                .  cIc::::~+X$$$PP$XIc~~!+"                     
          .   .                ~. vcIo+:!+~w$$$$PP$PIIv~:+~                     
      .                   . . "v vccI+:++!c$$$$$P$$$II:!+!:..  . .... ..  .   ..
 .. ....   . .. ......... ....!:!vcIo+++!~wPPPIc:!!+:~ ......... . . .. . 
............................."::+coII+!!~"$$$w$$PPIIv!!:: !..............................................!!:v+coIII   +!:cvPPIIv!!::~! ..................
............................!!:v+coIII~~~+!:cvPPIIv!!:: !..............................................!!:v+coIII   +!:cvP$PoIv~!+!+~!...................
............................:!vv~coccv~vvcvcvcwPPPPII:~!:++"+...................
............................++:v"cI::cvvvvv+v:0$PI:  !!:!!!...............................................:c!v:c!ccv::+++!!+0PI:~~!!:!!!...................
............................:c!v:c!ccv::+++!!+0PI:  !!:!!!...............................................:c!v:c!ccv::+++!!+0P:!~~"!!!"++...................
..."....".............~"..+.:vo:vvc:X:!+!!!!!!0P$:++"~!"+~:v!.."....."..........
...."....."........."......++vIcovv:###w!!!!!!w0+!!!"~"~~+!+...".".........."...
."""......."...".$$"."""...!:ccIowv+!#!##!!!!!!!!!!!.~!~~v+"..."..""..........."
"""""."""""""".""$B"""..."".:wvoco++!o#0R#!!!!!!!!oPPP$":~~"".".""""."."""."".""
"""".""""""+cc+""..""..."$$."+:IccI"!~!!!$$!!!!+$R+$$"~!!!"~."..""""""."."""."""
""""""""+vcIo+"""""""""""$$$#.:co~co~!!!!!!!!!:vcI:~""+!~!~"""""".""""""""""""""
""""""":cwIo+.""""""""""~$$"+co" !! !!!!!!!!!!!". +v!!"""""""""""""""""""""""""""" Icow "+co"~!!~!!!!!!!!!!!".~+v!!"""""""""""""""""""""""
"""""~Icow"+co" !! !!!!!!!!!!!". +v!!"""""""""""""""""""""""""""" Icow$~"""@~""""..#$$#~"":cII.~"~!!!!!!!!+".:.::~"""""""""""""~"""""""""~
""""~occooI$$B""#$#""~".P:""""~"~!Ico"""~!!!!+!~.. v+!"""B"""""""""""""""~""""""
"""~~cccwc+BR~""R$$$"""""""""~"~:c"+co.""~"+~!.  v:~""""".BB""~"~~"""~""""~"""""
"~"!vcccwc".~"""R$$$$$X""""~~"~PcI".+vc."""~. .~!~~""~""~w!!R.""""~"""""""!""~""
"""!!Icwo:""""+II$$$$!""""~0$o.""~:cI... !~"""~"":+:!!+!"!X""~"""~"""!v"""""
"""".."".~~"!IIIoo!#$$$"~"~wo$$"""""~~!~~"."~"""~$""~"$$~!~"""~~"~"~:c""~""~
"...""":+~"vIIIoIc~"PR@R@R@$~"."R#P~.~""""..  ".~~~v""@~~v~~~~~"c"~~~"~:c~~"~~~~
~..~~:!!~~cIIo:   IIo:~~~IIo:   $@@@$$v~~.+XX~.""""""".!" ~~"~~v~c"~~~~~cI+~~~~!II+!~"~~~~
"".".":II+$R$#!~~~~$$$#@@@$$0P!~!XXv!"~"""":!!. ~~~v!P~~~~~~~vo++~~~!Ioc+~~~~~~~
".~~.!~Ico$@B$$##B@@@@$#I00wXPPXv~~~"~o0!!~~.~~~~~~~~~~~!oo+:~~!Icc!+~"~~~~~
"~!!!~!I!":!$@@@@B@B@@@@@$0c0XPwXXXXXX~~+Xww+!!~~. "~~~~~~~~voI!!~~+occ!~~~~~~~+
+"!!..""~~::~@@@@@@@@@@@R$wIXPXXXPXXXPXPcw0w~!!!~... . .~~~~~..""""wwc++~"~~~:I~
~+!.""~~~"~P@@@@@@@@@@@@R$$0$#$$XXXXXXX0X00+!+!!"... .....vv"!~~~~~IoI!~"."!oc!~
"".~""~!+XXP#@@~:+o@@@@@@@@B$$$XXXXX00Xc00I++!!!......  . cI~!!!~~!:Ic~~"".oc~"~
"~.""~~~coXP:"~~":P@@@@@BB$$#$PXXXPXX0c000+++!!!.... ... vcI"!!!!!"!vv""~~::"~++
!!"."~~~~+."~"~"~.PRBBR#w$wXXXXXXXP00oXXX+++!!!.....   . II"+~!~!!.c+:""~.!!+ww:
~!+:+.."~."""""".X0PXXX+0oXXP0P0P00XoXo0++:+!~!.........Ic!!~!!~.!!v~".""~Iow++~
"+!~:."~.~.".~"~I0XXXX~:!P0XXwXoX0oXcXo+!!+!~!"..  ... :I~!!~!~~~"!~~".~~oI!!+~"
~!+!"~~~."..""..".!+v~~~"X0XXwXcXww0I0ov++~!!... ....c:~!!!!~!~"~~.!!!~~:o!!~""~
"!!"~~~""~..."~~~.~!!.~""o0Iw".$P$$0""~II!!!... ..cv~"!!~!!~!"~~""""~!!~w:~~""".
!."!!!"~~~~~~~~~~ "~"~"".v0""###$##$#wX"v:!!!+!!!!!~!!!+~+!~~"!.""..".v:I"""~~""
"~!!~+~~~~~~~~~"~".".".++c..""$##$#P$ww""+!!!!!!!!~!!!!"~!~.~"~."~."~!:~""."""..
 
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...