Submission #1298571

#TimeUsernameProblemLanguageResultExecution timeMemory
1298571chikien2009 Martian DNA (BOI18_dna)C++20
100 / 100
108 ms136792 KiB
#include <bits/stdc++.h>

using namespace std;

int n, t, r, x, y;
int a[200000], num[200000], valid;
bool block[200000];
deque<int> dq[200000];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> t >> r;
    for (int i = 0; i < n; ++i)
    {
        cin >> a[i];
    }
    for (int i = 0; i < r; ++i)
    {
        cin >> x >> y;
        num[x] = y;
    }
    x = 0;
    y = 2e9;
    for (int i = 0; i < n; ++i)
    {
        block[i] = true;
        dq[a[i]].push_back(i);
        valid += (dq[a[i]].size() == num[a[i]]);
        if (dq[a[i]].size() > num[a[i]])
        {
            block[dq[a[i]].front()] = false;
            dq[a[i]].pop_front();
        }
        while (x < i && !block[x])
        {
            x++;
        }
        if (valid == r)
        {
            y = min(y, i - x + 1);
        }
    }
    if (y == 2e9)
    {
        cout << "impossible";
    }
    else
    {
        cout << y;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...