165782025-05-06 18:28:51algoproTornyokcpp17Futási hiba 0/100345ms68408 KiB
// UUID: aebc8e07-77fd-43f3-b8ad-fb1d0112183a
#include <bits/stdc++.h>
using namespace std;

int n, k;
vector<int> numLess;
vector<vector<int>> nbrs;

int calcLess(int Indx){
    if(0<=numLess[Indx]) return numLess[Indx];
    int ans=0;
    for(int x : nbrs[Indx]) ans=max(ans, calcLess(x)+1);
    return numLess[Indx]=ans;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> k;
    vector<long long> sortedArr(n+k);
    vector<int> h(n), towerH(k);
    for(int i=0;i<n;i++){
        cin >> h[i];
        sortedArr[i]=(((long long)(h[i])<<32)|i);
    }
    for(int i=0;i<k;i++){
        cin >> towerH[i];
        sortedArr[n+i]=(((long long)(towerH[i])<<32)|n+i);
    }
    n/=2;
    sort(sortedArr.begin(), sortedArr.end());
    stack<int> stc;
    stc.push(0);
    nbrs.resize(n+1);
    for(int i=1;i<n;i++){
        while(!stc.empty() && h[stc.top()]<h[i]) stc.pop();
        nbrs[stc.empty()?n:stc.top()].push_back(i);
        stc.push(i);
    }
    numLess.resize(n+1, -1);
    calcLess(n);
    for(int i=0;i<n;i++) calcLess(i);
    int bestSoFar=0;
    vector<int>& ans=towerH;
    for(int i=0;i<n+k;i++){
        sortedArr[i]&=0xffffffff;
        if(n<=sortedArr[i]){
            ans[sortedArr[i]-n]=bestSoFar+1;
        }
        else{
            bestSoFar=max(bestSoFar, numLess[sortedArr[i]]);
        }
    }
    for(int i=0;i<k;i++) cout << ans[i] << ' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/100
1Futási hiba0/01ms316 KiB
2Futási hiba0/0243ms29492 KiB
3Hibás válasz0/21ms316 KiB
4Futási hiba0/21ms316 KiB
5Futási hiba0/61ms316 KiB
6Futási hiba0/61ms316 KiB
7Futási hiba0/414ms2356 KiB
8Futási hiba0/423ms3920 KiB
9Futási hiba0/870ms11436 KiB
10Futási hiba0/8158ms34876 KiB
11Futási hiba0/5268ms28724 KiB
12Futási hiba0/5303ms33940 KiB
13Futási hiba0/552ms8064 KiB
14Futási hiba0/5118ms27192 KiB
15Futási hiba0/5146ms35388 KiB
16Futási hiba0/5204ms24372 KiB
17Futási hiba0/5254ms29440 KiB
18Futási hiba0/5289ms34868 KiB
19Futási hiba0/5296ms34872 KiB
20Futási hiba0/5307ms67936 KiB
21Futási hiba0/5291ms68012 KiB
22Futási hiba0/5345ms68408 KiB