Submission

Status:

[PP][PP][PPP][-SS][PPP][PPPPP][PPPP-SS][PPPP][PPPP][PPPPP]

Subtask/Task Score:

{10/10}{10/10}{10/10}{0/10}{10/10}{10/10}{0/10}{10/10}{10/10}{10/10}

Score: 80

User: sulinx

Problemset: ช่องบนไม้

Language: cpp

Time: 0.025 second

Submitted On: 2025-09-25 17:13:35

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

int main(){
    int N, W, L, tmpn, tmp;
    cin >> N >> W >> L;

    vector<int> diff(W + 2*L + 5, 0);  // difference array

    for(int i = 0; i < N; i++){
        cin >> tmpn;
        for(int j = 0; j < tmpn; j++){
            cin >> tmp;
            tmp += L; // shift

            int left  = max(0, tmp - L);
            int right = min(W + 2*L, tmp + L);

            diff[left] += 1;
            diff[right+1] -= 1; // mark end
        }
    }

    // Prefix sum to get actual coverage
    int cur = 0;
    for(int i = 0; i < W + 2*L + 1; i++){
        cur += diff[i];
        if(cur >= N){
            cout << 1;
            return 0;
        }
    }
    cout << 0;
}