Submission #1268461

#TimeUsernameProblemLanguageResultExecution timeMemory
1268461ducdev Martian DNA (BOI18_dna)C++17
100 / 100
36 ms2628 KiB
// Author: 4uckd3v - Nguyen Cao Duc
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int MAX_N = 2e5;
const int MOD = 1e9 + 7;

int n, k, q;
int a[MAX_N + 5], req[MAX_N + 5], cnt[MAX_N + 5];

bool valid(int len) {
    for (int i = 0; i < k; i++) cnt[i] = 0;

    int cntGood = 0;
    for (int i = 1; i <= n; i++) {
        if (i > len) {
            if (cnt[a[i - len]] == req[a[i - len]]) cntGood--;
            cnt[a[i - len]]--;
        };
        cnt[a[i]]++;
        if (cnt[a[i]] == req[a[i]]) cntGood++;

        if (cntGood == q) return true;
    };

    return false;
};

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    if (fopen("MAIN.INP", "r")) {
        freopen("MAIN.INP", "r", stdin);
        freopen("MAIN.OUT", "w", stdout);
    };

    cin >> n >> k >> q;
    for (int i = 1; i <= n; i++) cin >> a[i];

    for (int i = 1; i <= q; i++) {
        int type;
        cin >> type;
        cin >> req[type];
    };

    int l = 1, r = n, res = 0;
    while (l <= r) {
        int mid = (l + r) >> 1;
        if (valid(mid)) {
            res = mid;
            r = mid - 1;
        } else
            l = mid + 1;
    };

    if (res == 0)
        cout << "impossible";
    else
        cout << res;
};

Compilation message (stderr)

dna.cpp: In function 'int main()':
dna.cpp:35:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   35 |         freopen("MAIN.INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
dna.cpp:36:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |         freopen("MAIN.OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...