int main () { scanf("%d %d", &n, &m); tree.build(1, 0, n); for (int i = 0; i < m; i++) { scanf("%d %d %d", &a, &b, &x); if (a == x) { tree.update(1, a, b, x); } else if (b == x) { tree.update(1, a-1, b-1, x); } else { tree.update(1, a-1, x-1, x); tree.update(1, x, b, x); } } tree.printit(1, 0); printf("\n"); }
void update(int p,data v) { if ( lt == rt ) { x = v; return; } int md = (lt+rt)/2; if ( l == NULL ) l = new seg(lt,md); if ( r == NULL ) r = new seg(md+1,rt); if ( p <= md ) l->update(p,v); else r->update(p,v); x = l->x + r->x; }
void solve2(int l,int r) { int n = cyc.size(); ans -= c.ask(1,1,n,l,r); //cerr<<ans<<' '; c.update(1,1,n,l,r); ans += c.ask(1,1,n,l,r); //cerr<<ans<<'\n'; }