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;
}