1 条题解

  • 0
    @ 2025-12-16 20:24:01

    #include #include #include using namespace std;

    int main() { int n; cin >> n;

    vector<int> a(n+1);
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    
    vector<int> diff(n+5, 0);  // 差分数组
    
    for (int i = 1; i <= n; i++) {
        if (a[i] > 0) {
            int l = i;
            int r = min(n, i + a[i] - 1);
            diff[l] += 1;
            diff[r + 1] -= 1;
        }
    }
    
    vector<int> wet(n+1, 0);
    for (int i = 1; i <= n; i++) {
        wet[i] = wet[i-1] + diff[i];
    }
    
    for (int i = 1; i <= n; i++) {
        if (wet[i] > 0) {
            cout << 1 << " ";
        } else {
            cout << 0 << " ";
        }
    }
    cout << endl;
    
    return 0;
    

    }

    • 1

    信息

    ID
    14538
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者