166942025-05-09 10:26:58TaxiradioMágikus sorozatcpp17Elfogadva 100/100155ms22320 KiB
// Source: https://usaco.guide/general/io

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

int main() {
	int n; cin >> n;
    vector<int> a;
    vector<int> b;
    int s = 0, e = -1;
    for(int i = 0; i < n; i++){
        int y; cin >> y;
        a.push_back(y);
        if(i != 0 && i+y-1 >= e){
            e = i+y-1;
            s = i;
        }
        if(e < i){
            b.push_back(i);
        }else{
            b.push_back(b[i-s]);
        }
    }
    vector<vector<int>> g(n);
    for(int i = 0; i < n; i++){
        int y = a[i];
        if(i+y < n){
            g[b[i+y]].push_back(b[y]);
            g[b[y]].push_back(b[i+y]);
        }
    }
    vector<int> d(n , -1);
    for(int i = 0; i < n; i++){
        if(d[b[i]] != -1)continue;
        sort(g[b[i]].begin() , g[b[i]].end());
        d[b[i]] = 1;
        for(int x : g[b[i]]){
            if(d[b[i]] == d[x])d[b[i]]++;
        }
    }
    for(int i = 0; i < n; i++)cout << d[b[i]] << " ";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva4ms1076 KiB
subtask215/15
3Elfogadva3ms564 KiB
4Elfogadva3ms564 KiB
5Elfogadva3ms568 KiB
subtask315/15
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
subtask430/30
11Elfogadva2ms564 KiB
12Elfogadva3ms564 KiB
13Elfogadva2ms564 KiB
14Elfogadva2ms316 KiB
subtask540/40
15Elfogadva144ms22320 KiB
16Elfogadva150ms20968 KiB
17Elfogadva128ms16196 KiB
18Elfogadva126ms15068 KiB
19Elfogadva131ms16044 KiB
20Elfogadva136ms16196 KiB
21Elfogadva142ms16404 KiB
22Elfogadva140ms16732 KiB
23Elfogadva137ms16448 KiB
24Elfogadva131ms15936 KiB
25Elfogadva125ms15304 KiB
26Elfogadva131ms16352 KiB
27Elfogadva101ms13648 KiB
28Elfogadva116ms14912 KiB
29Elfogadva119ms15668 KiB
30Elfogadva155ms13628 KiB
31Elfogadva134ms14148 KiB
32Elfogadva119ms14908 KiB