#include <iostream>
#define f first
#define s second
using namespace std;
int a,b,c,d,e,f,l,k,p,w,n,m,pop,st[2097153],comp;
// miej, kolor (minus to koniec)
void ins(int pp, int kp, int ll)
{
pp+=comp;
kp+=comp;
while (pp<kp)
{
if (pp&1)
{
st[pp]*=ll;
pp++;
}
if (!(kp&1))
{
st[kp]*=ll;
kp--;
}
pp>>=1;
kp>>=1;
}
if (pp==kp)
{
st[pp]*=ll;
}
return;
}
int main()
{
scanf("%d%d", &n, &m);
for (a=0; a!=2097153; a++)
{
st[a]=1;
}
comp=1;
while (comp<n)
{
comp<<=1;
}
comp--;
for (a=0; a!=m; a++)
{
scanf("%d%d%d", &p, &k, &l);
if (l==3)
{
ins(p, k, 0);
}
if (l==2)
{
ins(p, k, 3);
}
if (l==1)
{
ins(p, k, 2);
}
}
for (a=1; a<=comp+n; a++)
{
st[a]*=st[a>>1];
}
for (a=comp+1; a<=comp+n; a++)
{
if (st[a]&&st[a]==(st[a]/6)*6)
{
w++;
}
}
printf("%d", w);
}
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include <iostream> #define f first #define s second using namespace std; int a,b,c,d,e,f,l,k,p,w,n,m,pop,st[2097153],comp; // miej, kolor (minus to koniec) void ins(int pp, int kp, int ll) { pp+=comp; kp+=comp; while (pp<kp) { if (pp&1) { st[pp]*=ll; pp++; } if (!(kp&1)) { st[kp]*=ll; kp--; } pp>>=1; kp>>=1; } if (pp==kp) { st[pp]*=ll; } return; } int main() { scanf("%d%d", &n, &m); for (a=0; a!=2097153; a++) { st[a]=1; } comp=1; while (comp<n) { comp<<=1; } comp--; for (a=0; a!=m; a++) { scanf("%d%d%d", &p, &k, &l); if (l==3) { ins(p, k, 0); } if (l==2) { ins(p, k, 3); } if (l==1) { ins(p, k, 2); } } for (a=1; a<=comp+n; a++) { st[a]*=st[a>>1]; } for (a=comp+1; a<=comp+n; a++) { if (st[a]&&st[a]==(st[a]/6)*6) { w++; } } printf("%d", w); } |
English