165632025-05-06 18:20:11algoproTornyokcpp17Időlimit túllépés 95/100442ms123956 KiB
// UUID: 4db22b53-6d87-4222-837d-5f5e9e1c21e1
#include <bits/stdc++.h>
using namespace std;

int n, k;
vector<int> h, towerH;
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);
    h.resize(n);
    for(int i=0;i<n;i++){
        cin >> h[i];
        sortedArr[i]=(((long long)(h[i])<<32)|i);
    }
    towerH.resize(k);
    for(int i=0;i<k;i++){
        cin >> towerH[i];
        sortedArr[n+i]=(((long long)(towerH[i])<<32)|n+i);
    }
    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(k);
    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 x : ans) cout << x << ' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base95/100
1Elfogadva0/01ms320 KiB
2Elfogadva0/0307ms48432 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva6/61ms316 KiB
6Elfogadva6/61ms316 KiB
7Elfogadva4/417ms3636 KiB
8Elfogadva4/427ms6216 KiB
9Elfogadva8/876ms18564 KiB
10Elfogadva8/8226ms63036 KiB
11Elfogadva5/5321ms47160 KiB
12Elfogadva5/5368ms55952 KiB
13Elfogadva5/565ms13364 KiB
14Elfogadva5/5165ms39084 KiB
15Elfogadva5/5224ms63796 KiB
16Elfogadva5/5252ms39732 KiB
17Elfogadva5/5317ms48432 KiB
18Elfogadva5/5365ms57396 KiB
19Elfogadva5/5388ms57396 KiB
20Elfogadva5/5381ms115508 KiB
21Elfogadva5/5393ms115764 KiB
22Időlimit túllépés0/5442ms123956 KiB