8166 2024. 01. 12 15:20:04 FulopMate Titkos sorozat cpp17 Elfogadva 40/40 35ms 25688 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

int n;
vector<int> v, ans;
vector<vector<int>> w;

void solve(int l, int r, int mn, int mx, int kov){
	if(l > r)return;
    if(l == r){
        ans[l] = mn;
        return;
    }
	int i = *lower_bound(w[kov].begin(), w[kov].end(), l);
	ans[i] = mx;
	solve(l, i-1, mn, mn+(i-1-l), i);
	solve(i+1, r, mn+(i-1-l)+1, mx-1, kov);
}

/*
5
-1 3 4 -1 -1
*/

int main() {
	ios_base::sync_with_stdio(0); cin.tie(0);
	// ifstream cin("be2.txt");
	cin>>n;
	v.assign(n, 0);
	for(int&i:v){cin>>i;i--;if(i == -2)i = n;}
	w.assign(n+1, {});
	for(int i = 0; i < n; i++){
		w[v[i]].push_back(i);
	}
	ans.assign(n, 0);
	solve(0, n-1, 0, n-1, n);
	for(int i : ans)cout<<i+1<<" ";
	cout<<endl;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1832 KiB
2 Elfogadva 0/0 17ms 7620 KiB
3 Elfogadva 1/1 3ms 2268 KiB
4 Elfogadva 1/1 3ms 2476 KiB
5 Elfogadva 2/2 3ms 2692 KiB
6 Elfogadva 1/1 3ms 2840 KiB
7 Elfogadva 1/1 3ms 3088 KiB
8 Elfogadva 2/2 3ms 3260 KiB
9 Elfogadva 2/2 32ms 12736 KiB
10 Elfogadva 2/2 32ms 12740 KiB
11 Elfogadva 2/2 32ms 12896 KiB
12 Elfogadva 2/2 32ms 13148 KiB
13 Elfogadva 2/2 34ms 13852 KiB
14 Elfogadva 2/2 34ms 14660 KiB
15 Elfogadva 2/2 34ms 16408 KiB
16 Elfogadva 3/3 34ms 17044 KiB
17 Elfogadva 3/3 32ms 17612 KiB
18 Elfogadva 3/3 35ms 18272 KiB
19 Elfogadva 3/3 35ms 19812 KiB
20 Elfogadva 3/3 35ms 25688 KiB
21 Elfogadva 1/1 34ms 13548 KiB
22 Elfogadva 1/1 32ms 13524 KiB
23 Elfogadva 1/1 32ms 13316 KiB