4947 2023. 04. 07 18:30:27 TomaSajt Színes szobák (50 pont) cpp17 Accepted 50/50 29ms 6384 KiB
#include <bits/stdc++.h>
using namespace std;
// shamelessly "inspired by" (stolen) solution from SleepyOverlord on njudge

int main() {
  cin.tie(0), cin.sync_with_stdio(0);

  int n, k, m;
  cin >> n >> k >> m;

  vector<int> pos_color(n + 2);
  for (int i = 1; i <= n; i++)
    cin >> pos_color[i];

  vector<array<int, 2>> rqueries(m);
  for (int i = m - 1; i >= 0; i--)
    cin >> rqueries[i][0] >> rqueries[i][1];

  // calculates in reverse what was the position of the people
  // who reached their respective side last
  int left_pos = 0, right_pos = n + 1;
  for (auto &[c, x] : rqueries) {
    if (x == -1 && c == pos_color[left_pos + 1])
      left_pos++;
    if (x == 1 && c == pos_color[left_pos])
      left_pos--;
    if (x == 1 && c == pos_color[right_pos - 1])
      right_pos--;
    if (x == -1 && c == pos_color[right_pos])
      right_pos++;
  }
  cout << left_pos + (n + 1 - right_pos);
}
Subtask Sum Test Verdict Time Memory
base 50/50
1 Accepted 0/0 3ms 1824 KiB
2 Accepted 0/0 29ms 4400 KiB
3 Accepted 1/1 3ms 2380 KiB
4 Accepted 1/1 3ms 2584 KiB
5 Accepted 1/1 3ms 2792 KiB
6 Accepted 1/1 3ms 2644 KiB
7 Accepted 1/1 3ms 2644 KiB
8 Accepted 1/1 3ms 2900 KiB
9 Accepted 1/1 3ms 2996 KiB
10 Accepted 1/1 3ms 3356 KiB
11 Accepted 1/1 3ms 3444 KiB
12 Accepted 1/1 3ms 3636 KiB
13 Accepted 1/1 4ms 3792 KiB
14 Accepted 1/1 4ms 3732 KiB
15 Accepted 1/1 4ms 4048 KiB
16 Accepted 1/1 4ms 4292 KiB
17 Accepted 1/1 4ms 4232 KiB
18 Accepted 1/1 4ms 4380 KiB
19 Accepted 1/1 18ms 5196 KiB
20 Accepted 1/1 29ms 6232 KiB
21 Accepted 1/1 21ms 5716 KiB
22 Accepted 1/1 24ms 5724 KiB
23 Accepted 1/1 28ms 5848 KiB
24 Accepted 1/1 29ms 6244 KiB
25 Accepted 1/1 29ms 6240 KiB
26 Accepted 1/1 29ms 6240 KiB
27 Accepted 3/3 28ms 6372 KiB
28 Accepted 3/3 28ms 6384 KiB
29 Accepted 3/3 28ms 6384 KiB
30 Accepted 3/3 28ms 6384 KiB
31 Accepted 3/3 28ms 6384 KiB
32 Accepted 3/3 28ms 6384 KiB
33 Accepted 4/4 16ms 4952 KiB
34 Accepted 4/4 25ms 5860 KiB