57252023-09-10 01:50:45TomaSajtSzínes szobák (50 pont)cpp17Elfogadva 50/5032ms24740 KiB
// "inspired by" solution by SleepyOverlord on njudge
#include <bits/stdc++.h>
using namespace std;

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>> instrs(m);
  for (auto& [c, x] : instrs) cin >> c >> x;
  reverse(instrs.begin(), instrs.end());

  // 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] : instrs) {
    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);
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1828 KiB
2Elfogadva0/032ms5528 KiB
3Elfogadva1/13ms3520 KiB
4Elfogadva1/13ms3756 KiB
5Elfogadva1/13ms3740 KiB
6Elfogadva1/13ms4008 KiB
7Elfogadva1/13ms4244 KiB
8Elfogadva1/13ms4464 KiB
9Elfogadva1/13ms4448 KiB
10Elfogadva1/13ms4720 KiB
11Elfogadva1/13ms4696 KiB
12Elfogadva1/13ms4720 KiB
13Elfogadva1/14ms5200 KiB
14Elfogadva1/14ms5324 KiB
15Elfogadva1/14ms5596 KiB
16Elfogadva1/14ms5792 KiB
17Elfogadva1/14ms5900 KiB
18Elfogadva1/14ms5988 KiB
19Elfogadva1/119ms7816 KiB
20Elfogadva1/132ms10000 KiB
21Elfogadva1/125ms10536 KiB
22Elfogadva1/127ms11928 KiB
23Elfogadva1/130ms13388 KiB
24Elfogadva1/132ms14940 KiB
25Elfogadva1/132ms16124 KiB
26Elfogadva1/132ms17520 KiB
27Elfogadva3/330ms18704 KiB
28Elfogadva3/330ms19620 KiB
29Elfogadva3/330ms20788 KiB
30Elfogadva3/330ms21868 KiB
31Elfogadva3/330ms22868 KiB
32Elfogadva3/330ms23864 KiB
33Elfogadva4/417ms22800 KiB
34Elfogadva4/427ms24740 KiB