81612024-01-12 15:02:43FulopMateTitkos sorozatcpp17Futási hiba 0/4024ms15928 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), mx);
	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);
	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++){
		if(v[i] == -2)w[n].push_back(i);
		else 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ÖsszpontTesztVerdiktIdőMemória
base0/40
1Elfogadva0/03ms1824 KiB
2Futási hiba0/012ms7004 KiB
3Futási hiba0/13ms2336 KiB
4Futási hiba0/13ms2420 KiB
5Futási hiba0/23ms2668 KiB
6Futási hiba0/13ms3060 KiB
7Futási hiba0/13ms2892 KiB
8Futási hiba0/23ms3220 KiB
9Futási hiba0/221ms12744 KiB
10Futási hiba0/223ms12536 KiB
11Futási hiba0/223ms12824 KiB
12Futási hiba0/223ms12828 KiB
13Futási hiba0/223ms13004 KiB
14Futási hiba0/223ms13364 KiB
15Futási hiba0/223ms13688 KiB
16Futási hiba0/323ms13836 KiB
17Futási hiba0/323ms14124 KiB
18Futási hiba0/324ms14124 KiB
19Futási hiba0/323ms14464 KiB
20Futási hiba0/324ms15928 KiB
21Futási hiba0/121ms13152 KiB
22Futási hiba0/121ms13236 KiB
23Futási hiba0/121ms13104 KiB