Пример #1
0
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");
}
Пример #2
0
	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;
	}
Пример #3
0
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';
}