165532025-05-06 18:03:09algoproTornyokcpp17Hibás válasz 0/100486ms122932 KiB
// UUID: 971cb6ff-ccee-4b57-be2e-be3669af05bf
#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;
    h.resize(n);
    for(int& x : h) cin >> x;
    towerH.resize(k);
    for(int& x : towerH) cin >> x;
    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);
    vector<array<int, 2>> sortedArr(n+k);
    for(int i=0;i<n;i++) sortedArr[i]={h[i], i};
    for(int i=0;i<k;i++) sortedArr[n+i]={towerH[i], n+i};
    sort(sortedArr.begin(), sortedArr.end());
    return 0;
    int bestSoFar=0;
    vector<int> ans(k);
    for(int i=0;i<n+k;i++){
        if(n<=sortedArr[i][1]){
            ans[sortedArr[i][1]-n]=bestSoFar+1;
        }
        else{
            bestSoFar=max(bestSoFar, numLess[sortedArr[i][1]]);
        }
    }
    for(int x : ans) cout << x << ' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/100
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/0375ms47924 KiB
3Hibás válasz0/21ms508 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/61ms316 KiB
6Hibás válasz0/61ms316 KiB
7Hibás válasz0/419ms3724 KiB
8Hibás válasz0/430ms6204 KiB
9Hibás válasz0/898ms18504 KiB
10Hibás válasz0/8259ms62944 KiB
11Hibás válasz0/5372ms47248 KiB
12Időlimit túllépés0/5430ms55860 KiB
13Hibás válasz0/576ms13108 KiB
14Hibás válasz0/5194ms38964 KiB
15Hibás válasz0/5256ms63284 KiB
16Hibás válasz0/5298ms39488 KiB
17Hibás válasz0/5374ms47920 KiB
18Időlimit túllépés0/5435ms56824 KiB
19Időlimit túllépés0/5456ms56884 KiB
20Időlimit túllépés0/5444ms114424 KiB
21Időlimit túllépés0/5453ms114740 KiB
22Időlimit túllépés0/5486ms122932 KiB