fork download
  1. //RAM__RAM
  2. #include<bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. typedef long long int ll;
  7.  
  8. ll isKthBitSet(ll n,ll k)
  9. {
  10. ll pass;
  11. if (n & (1 << (k - 1)))
  12. {
  13. pass=1;
  14. }
  15. else
  16. {
  17. pass=0;
  18. }
  19. return pass;
  20. }
  21.  
  22. int main()
  23. {
  24. ll t;
  25. cin>>t;
  26. ll i1=1;
  27. while(t--)
  28. {
  29.  
  30. ll n;
  31. map<ll,ll> a1;
  32. ll q;
  33. cin>>n>>q;
  34. ll a[n];
  35. ll i=0;
  36. ll m=0;
  37. while(i<n)
  38. {
  39. cin>>a[i];
  40. ll k1=a[i];
  41.  
  42. ll r=0;
  43. ll k=1;
  44. while(k<=15)
  45. {
  46. ll cm=isKthBitSet(k1,k);
  47. r=r+cm;
  48. k++;
  49. }
  50. if(r%2!=0)
  51. {
  52.  
  53. a1[i]=1;
  54.  
  55. }
  56.  
  57.  
  58. m=m^a[i];
  59. i++;
  60. }
  61.  
  62. //map<ll, ll>::iterator itr;
  63.  
  64. /* for (itr = a1.begin(); itr != a1.end(); ++itr)
  65.   {
  66.   cout << '\t' << itr->first
  67.   << '\t' << itr->second << '\n';
  68.   }
  69.  */
  70.  
  71.  
  72.  
  73. cout<<"Case #"<<i1<<": ";
  74. while(q--)
  75. {
  76.  
  77. ll pi,vi;
  78. cin>>pi>>vi;
  79.  
  80. m=m^a[pi]^vi;
  81.  
  82. a[pi]=vi;
  83.  
  84. ll r=0;
  85. ll k=1;
  86. while(k<=15)
  87. {
  88. ll cm=isKthBitSet(vi,k);
  89. r=r+cm;
  90. k++;
  91. }
  92. if(r%2==0)
  93. {
  94. a1[pi]=1;
  95. a1.erase(pi);
  96. }
  97. else
  98. {
  99. a1[pi]=1;
  100.  
  101. }
  102.  
  103.  
  104.  
  105. r=0;//RAM-RAM
  106. k=1;
  107. while(k<=15)
  108. {
  109. ll cm=isKthBitSet(m,k);
  110. r=r+cm;
  111. k++;
  112. }
  113. if(r%2==0)
  114. {
  115. cout<<n<<" ";
  116. }
  117. else
  118. {
  119. map<ll, ll>::iterator itr;
  120.  
  121.  
  122. itr = a1.begin();
  123.  
  124. //cout<<itr->first<<" ";
  125.  
  126. ll k1=n-itr->first-1;
  127.  
  128.  
  129. map<ll, ll>::reverse_iterator it;
  130. it = a1.rbegin();
  131. ll k2= it->first;
  132. cout<<max(k1,k2);
  133.  
  134.  
  135.  
  136. cout<<" ";
  137.  
  138.  
  139.  
  140. }
  141.  
  142.  
  143.  
  144. //cout<<"\n";
  145. }
  146. i1++;
  147. cout<<"\n";
  148. }
  149.  
  150.  
  151. return 0;
  152. }
Success #stdin #stdout 0s 4364KB
stdin
2
4 3
10 21 3 7
1 13
0 32
2 22
5 1
14 1 15 20 26
4 26
stdout
Case #1: 4 3 4 
Case #2: 4