166072025-05-06 20:53:56algoproTornyokcpp17Elfogadva 100/100312ms49204 KiB
// UUID: 0d1a1bbb-f87b-4651-9ee6-f311f4222511
#pragma GCC optimize("O3,no-stack-protector")
#include <bits/stdc++.h>
using namespace std;

int n, k;
vector<int> numLess, previous;
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;
}

void calcLess2(){
    for (int i = n - 1; i >= 0; i--){
        if(previous[i] != -1) numLess[previous[i]] = max(numLess[previous[i]], numLess[i] + 1);
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> k;
    vector<long long> sortedArr(n+k);
    vector<int> h(n+1), 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);
    }
    h[n]=INT_MAX;
    sort(sortedArr.begin(), sortedArr.end());
    stack<int> stc;
    stc.push(n);
    nbrs.resize(n+1);
    previous.resize(n+1, -1);
    for(int i=0;i<n;i++){
        while(h[stc.top()]<h[i]) stc.pop();
        // nbrs[stc.top()].push_back(i);
        previous[i] = stc.top();
        stc.push(i);
    }
    numLess.resize(n+1, 0); // te itt eddig 0-ra resizeoltál
    // calcLess(n);
    calcLess2();
    int bestSoFar=0;
    vector<int>& ans=towerH;
    for(int i=0;i<n+k;i++){
        sortedArr[i]&=0xffffffff;
        if(n<=sortedArr[i]){
            towerH[sortedArr[i]-n]=bestSoFar+1;
        }
        else{
            bestSoFar=max(bestSoFar, numLess[sortedArr[i]]);
        }
    }
    for(int i=0;i<k;i++) cout << towerH[i] << ' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva0/01ms316 KiB
2Elfogadva0/0245ms37428 KiB
3Elfogadva2/21ms508 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva6/61ms316 KiB
6Elfogadva6/61ms316 KiB
7Elfogadva4/413ms2624 KiB
8Elfogadva4/420ms4660 KiB
9Elfogadva8/871ms17420 KiB
10Elfogadva8/8131ms27704 KiB
11Elfogadva5/5250ms36404 KiB
12Elfogadva5/5277ms43408 KiB
13Elfogadva5/545ms8244 KiB
14Elfogadva5/5107ms18740 KiB
15Elfogadva5/5126ms28320 KiB
16Elfogadva5/5199ms30772 KiB
17Elfogadva5/5238ms37628 KiB
18Elfogadva5/5291ms44488 KiB
19Elfogadva5/5289ms44852 KiB
20Elfogadva5/5261ms48708 KiB
21Elfogadva5/5239ms48692 KiB
22Elfogadva5/5312ms49204 KiB