Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include <iostream>
  2. //by GB Zaleski
  3. using namespace std;
  4. #define MAXVAL 1000000
  5.  
  6. int Array[MAXVAL];
  7. int Counter[MAXVAL];
  8. int recCounter;
  9. int result;
  10. int length;
  11. int n,m;
  12.  
  13. struct desc
  14. {
  15. int val = 0;
  16. int ile = 0;
  17. };
  18.  
  19. int main()
  20. {
  21. ios_base::sync_with_stdio(0);
  22. cin.tie(0);
  23. cout.tie(0);
  24. recCounter = 0;
  25. result = 0;
  26. length = 0;
  27. for (int i=0; i!= MAXVAL; ++i) Counter[i] = 0;
  28. cin >> n >> m;
  29. recCounter = m;
  30. desc Proceed[m];
  31. for (int i=0; i!=m; ++i)
  32. {
  33. cin >> Proceed[i].ile;
  34. length += Proceed[i].ile;
  35. }
  36. for (int i=0; i!=m; ++i) cin >> Proceed[i].val;
  37. for (int i=0; i!=m; ++i) Counter[Proceed[i].val] = Proceed[i].ile;
  38. for (int i=0; i!=n; ++i) cin >> Array[i];
  39.  
  40. for (int i=0; i!=length; ++i)
  41. {
  42. Counter[Array[i]]--;
  43. if (Counter[Array[i]] == 0)
  44. {
  45. recCounter--;
  46. if (recCounter == 0) result++;
  47. }
  48. else if (Counter[Array[i]] == -1) recCounter++;
  49. /*for (int i=0; i!=6; ++i) cout << Counter[i] << " ";
  50. cout << " -> rC =" << recCounter;
  51. cout << endl;*/
  52. }
  53.  
  54. //cout << "Part2\n";
  55. for (int i=length; i!=n ; ++i)
  56. {
  57. Counter[Array[i-length]]++;
  58. if (Counter[Array[i-length]] == 0)
  59. {
  60. recCounter--;
  61. if (recCounter == 0) result++;
  62. }
  63. else if (Counter[Array[i]] == 1) recCounter++;
  64.  
  65. Counter[Array[i]]--;
  66. if (Counter[Array[i]] == 0)
  67. {
  68. recCounter--;
  69. if (recCounter == 0) result++;
  70. }
  71. else if (Counter[Array[i]] == -1) recCounter++;
  72.  
  73. /* for (int i=0; i!=6; ++i) cout << Counter[i] << " ";
  74. cout << " -> rC =" << recCounter;
  75. cout << endl;*/
  76. }
  77.  
  78.  
  79. cout << result;
  80. return 0;
  81. }
  82.  
  83. /*
  84. 7 3
  85. 2 1 1
  86. 1 2 3
  87. 1 1 2 3 3 3 3
  88. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement