253892026-02-19 18:09:15miszorimarciSzínes szobák (50 pont)cpp17Elfogadva 50/5086ms1780 KiB
#include <bits/stdc++.h>
using namespace std;

int n, k, m;
vector<int>v;
vector<pair<int, int>>op;

bool check1(int pos)
{
    for(auto [c, x] : op)
    {
        if(c == v[pos])pos += x;
        if(pos == -1)return 1;
        if(pos == n)return 0;
    }
    return 0;
}
bool check2(int pos)
{
    for(auto [c, x] : op)
    {
        if(c == v[pos])pos += x;
        if(pos == -1)return 0;
        if(pos == n)return 1;
    }
    return 0;
}

int main() {
	cin >> n >> k >> m;
    int ans = 0;
    v.resize(n);
    op.resize(m);
    for(int &i : v)cin >> i;
    for(auto &p : op)cin >> p.first >> p.second;
    int l = -1, r = n;
    while(l < r-1)
    {
        int mid = (l+r)/2;
        if(check1(mid))l = mid;
        else r = mid;
    }
    ans += l+1;
    //cout << l << " ";
    l = -1, r = n;
    while(l < r-1)
    {
        int mid = (l+r)/2;
        if(check2(mid))r = mid;
        else l = mid;
    }
    //cout << r << " ";
    ans += n-r;
    cout << ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/086ms1604 KiB
3Elfogadva1/12ms316 KiB
4Elfogadva1/12ms316 KiB
5Elfogadva1/12ms316 KiB
6Elfogadva1/12ms508 KiB
7Elfogadva1/12ms316 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva1/11ms316 KiB
10Elfogadva1/12ms316 KiB
11Elfogadva1/11ms316 KiB
12Elfogadva1/12ms420 KiB
13Elfogadva1/17ms316 KiB
14Elfogadva1/14ms444 KiB
15Elfogadva1/14ms508 KiB
16Elfogadva1/17ms504 KiB
17Elfogadva1/18ms588 KiB
18Elfogadva1/18ms520 KiB
19Elfogadva1/150ms1076 KiB
20Elfogadva1/182ms1588 KiB
21Elfogadva1/161ms1276 KiB
22Elfogadva1/167ms1348 KiB
23Elfogadva1/178ms1332 KiB
24Elfogadva1/182ms1588 KiB
25Elfogadva1/182ms1336 KiB
26Elfogadva1/182ms1332 KiB
27Elfogadva3/375ms1588 KiB
28Elfogadva3/375ms1388 KiB
29Elfogadva3/375ms1332 KiB
30Elfogadva3/375ms1780 KiB
31Elfogadva3/375ms1336 KiB
32Elfogadva3/375ms1332 KiB
33Elfogadva4/437ms996 KiB
34Elfogadva4/463ms1392 KiB