Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //by GB Zaleski
- using namespace std;
- #define MAXVAL 1000000
- int Array[MAXVAL];
- int Counter[MAXVAL];
- int recCounter;
- int result;
- int length;
- int n,m;
- struct desc
- {
- int val = 0;
- int ile = 0;
- };
- int main()
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- recCounter = 0;
- result = 0;
- length = 0;
- for (int i=0; i!= MAXVAL; ++i) Counter[i] = 0;
- cin >> n >> m;
- recCounter = m;
- desc Proceed[m];
- for (int i=0; i!=m; ++i)
- {
- cin >> Proceed[i].ile;
- length += Proceed[i].ile;
- }
- for (int i=0; i!=m; ++i) cin >> Proceed[i].val;
- for (int i=0; i!=m; ++i) Counter[Proceed[i].val] = Proceed[i].ile;
- for (int i=0; i!=n; ++i) cin >> Array[i];
- for (int i=0; i!=length; ++i)
- {
- Counter[Array[i]]--;
- if (Counter[Array[i]] == 0)
- {
- recCounter--;
- if (recCounter == 0) result++;
- }
- else if (Counter[Array[i]] == -1) recCounter++;
- /*for (int i=0; i!=6; ++i) cout << Counter[i] << " ";
- cout << " -> rC =" << recCounter;
- cout << endl;*/
- }
- //cout << "Part2\n";
- for (int i=length; i!=n ; ++i)
- {
- Counter[Array[i-length]]++;
- if (Counter[Array[i-length]] == 0)
- {
- recCounter--;
- if (recCounter == 0) result++;
- }
- else if (Counter[Array[i]] == 1) recCounter++;
- Counter[Array[i]]--;
- if (Counter[Array[i]] == 0)
- {
- recCounter--;
- if (recCounter == 0) result++;
- }
- else if (Counter[Array[i]] == -1) recCounter++;
- /* for (int i=0; i!=6; ++i) cout << Counter[i] << " ";
- cout << " -> rC =" << recCounter;
- cout << endl;*/
- }
- cout << result;
- return 0;
- }
- /*
- 7 3
- 2 1 1
- 1 2 3
- 1 1 2 3 3 3 3
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement