165972025-05-06 20:25:25algoproTornyokcpp17Time limit exceeded 95/100442ms109620 KiB
// UUID: 4080612e-aff6-4bbf-be57-f25a86972318
#pragma GCC optimize("O3,no-stack-protector")
#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+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);
    for(int i=0;i<n;i++){
        while(h[stc.top()]<h[i]) stc.pop();
        nbrs[stc.top()].push_back(i);
        stc.push(i);
    }
    numLess.resize(n+1, -1);
    calcLess(n);
    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] << ' ';
}
SubtaskSumTestVerdictTimeMemory
base95/100
1Accepted0/01ms512 KiB
2Accepted0/0324ms48124 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms500 KiB
5Accepted6/61ms468 KiB
6Accepted6/61ms316 KiB
7Accepted4/417ms3648 KiB
8Accepted4/427ms6220 KiB
9Accepted8/882ms18556 KiB
10Accepted8/8201ms57424 KiB
11Accepted5/5317ms46912 KiB
12Accepted5/5379ms55708 KiB
13Accepted5/561ms13108 KiB
14Accepted5/5146ms36404 KiB
15Accepted5/5206ms58016 KiB
16Accepted5/5256ms39476 KiB
17Accepted5/5312ms48100 KiB
18Accepted5/5384ms57140 KiB
19Accepted5/5395ms57080 KiB
20Accepted5/5365ms102708 KiB
21Accepted5/5354ms102708 KiB
22Time limit exceeded0/5442ms109620 KiB