82732024-01-14 08:19:04MagyarKendeSZLGHőségriadó (50 pont)cpp17Hibás válasz 0/5050ms5336 KiB
#include <bits/stdc++.h>
#define speed cin.tie(0); ios::sync_with_stdio(0)
using namespace std;

int N;

vector<int> ranges(const vector<int>& tempS, int K, bool mn) {
    vector<int> v(N - K + 1);
    deque<int> q;

    for (int i = 0; i < N; i++) {
        while (!q.empty() && i - q.front() >= K) q.pop_front();
        while (!q.empty() && (
            mn ? tempS[q.back()] >= tempS[i] : 
            tempS[q.back()] <= tempS[i]
        )) q.pop_back();
        
        q.push_back(i);

        if (i >= K - 1) {
            v[i - K + 1] = tempS[q.front()];
        }
    }
    
    return v;
}

int main() {
    int K, L, F;
    cin >> N >> K >> L >> F;

    vector<int> tempS(N);
    for (int& x : tempS) cin >> x;

    if (N < K || N < L) {
        cout << 0;
        exit(0);
    }

    vector<int> maxS = ranges(tempS, L, 0), minS = ranges(tempS, K, 1);

    for (int x : maxS) cout << x <<' '; 
    cout <<'\n';
    for (int x : minS) cout << x <<' '; 
    cout <<'\n';

    int result = 0;

    bool alert = 0;
    for (int i = 0; i < N - K + 1 && i < N - L + 1; i++) {
        if (!alert && minS[i] > F) {
            alert = 1;
            i += K - 1;
            result++;
        }
        else if (maxS[i] < F) {
            alert = 0;
            i += L - 1;
        }
    }

    cout << result;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/03ms1816 KiB
2Hibás válasz0/050ms4396 KiB
3Hibás válasz0/23ms2492 KiB
4Hibás válasz0/23ms2764 KiB
5Hibás válasz0/23ms2860 KiB
6Hibás válasz0/23ms2788 KiB
7Hibás válasz0/22ms2860 KiB
8Hibás válasz0/43ms3020 KiB
9Hibás válasz0/420ms4040 KiB
10Hibás válasz0/426ms4216 KiB
11Hibás válasz0/430ms4852 KiB
12Hibás válasz0/426ms4408 KiB
13Hibás válasz0/439ms5208 KiB
14Hibás válasz0/46ms3700 KiB
15Hibás válasz0/446ms5336 KiB
16Hibás válasz0/446ms5336 KiB
17Hibás válasz0/446ms5336 KiB