fork download
  1. #include<iostream>
  2. #include<math.h>
  3. #include<set>
  4. using namespace std;
  5. set<int> s;
  6. int n, m, d[100010][25];
  7.  
  8. int main(){
  9. cin.tie(NULL);
  10. cout.tie(NULL);
  11. ios_base::sync_with_stdio(false);
  12. int a, b, c, i;
  13. cin>>n>>m;
  14. cout<<pow(2.0, 5);
  15. while(m--){
  16. cin>>a;
  17. if(a==1){
  18. cin>>b>>c;
  19. if(d[b][c]==0){
  20. d[b][c]=1;
  21. d[b][0]+=pow(2.0, c);
  22. }
  23. }
  24. if(a==2){
  25. cin>>b>>c;
  26. if(d[b][c]){
  27. d[b][c]=0;
  28. d[b][0]-=pow(2.0, c);
  29. }
  30. }
  31. if(a==3){
  32. cin>>b;
  33. if(d[b][20]) d[b][0]-=pow(2.0, 20);
  34. d[b][20]=0;
  35. for(i=19; i>=1; i--)
  36. if(d[b][i]){
  37. d[b][i]=0;
  38. d[b][i+1]=1;
  39. }
  40. d[b][0]*=2;
  41. }
  42. else{
  43. cin>>b;
  44. if(d[b][1]) d[b][0]-=2;
  45. d[b][1]=0;
  46. for(i=20; i>=2; i--)
  47. if(d[b][i]){
  48. d[b][i]=0;
  49. d[b][i-1]=1;
  50. }
  51. d[b][0]/=2;
  52. }
  53. }
  54. for(i=1; i<=n; i++) s.insert(d[i][0]);
  55. cout<<s.size();
  56. }
Success #stdin #stdout 0s 4720KB
stdin
5 5
1 1 1
1 1 2
1 2 2
1 2 3
3 1
stdout
321