#include <bits/stdc++.h>
using namespace std;
int przedzial[2097155];
int n, m, x;
void zmien(int l, int r, int k, int L, int R, int i){
if (i < 2*x && R >= l && r >= L){
if (l <= L && R <= r)
przedzial[i] |= (1 << k);
else {
zmien(l, r, k, L, L + (R - L)/2, 2*i);
zmien(l, r, k, L + (R - L)/2 + 1, R, 2*i + 1);
}
}
}
int oblicz(){
int c = 0;
for (int i = 1; i <= x; i++){
przedzial[2*i] |= przedzial[i];
przedzial[2*i + 1] |= przedzial[i];
}
for (int i = x; i < x + n; i++)
if (przedzial[i] == 6) c++;
return c;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
x = ceil(log2(n));
x = pow(2, x);
for (int i = 0; i < m; i++){
int l, r, k;
cin >> l >> r >> k;
zmien(l, r, k, 1, x, 1);
}
cout << oblicz();
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <bits/stdc++.h> using namespace std; int przedzial[2097155]; int n, m, x; void zmien(int l, int r, int k, int L, int R, int i){ if (i < 2*x && R >= l && r >= L){ if (l <= L && R <= r) przedzial[i] |= (1 << k); else { zmien(l, r, k, L, L + (R - L)/2, 2*i); zmien(l, r, k, L + (R - L)/2 + 1, R, 2*i + 1); } } } int oblicz(){ int c = 0; for (int i = 1; i <= x; i++){ przedzial[2*i] |= przedzial[i]; przedzial[2*i + 1] |= przedzial[i]; } for (int i = x; i < x + n; i++) if (przedzial[i] == 6) c++; return c; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; x = ceil(log2(n)); x = pow(2, x); for (int i = 0; i < m; i++){ int l, r, k; cin >> l >> r >> k; zmien(l, r, k, 1, x, 1); } cout << oblicz(); return 0; } |
English