Пример #1
0
// OPERATION 3 //
void update3( int i , int b , int c , int s , int e , int v ){

	propogate( i , b , c );
	if ( ( e < b) || ( c < s) )
	{
		return ;
	}

	if ( ( s <= b) && ( c <= e) )
	{
		tree[i] =  (  (ll)( c - b + 1) * (ll) v )%mod ;
		if ( b != c)
		{
			lazy[ 2*i].a3 = 1 ;
			lazy[ 2*i].x= (ll) v;
			lazy[ 2*i].a1= 1ll;
			lazy[ 2*i].d= 0;
			lazy[ 2*i].a2= 0;
			lazy[ 2*i].y =  1  ;
			lazy[ 2*i + 1].y =  1  ;
			lazy[ 2*i + 1].a3 = 1;
			lazy[2*i + 1].x = (ll)v;
			lazy[2*i + 1].a1 = 1ll;
			lazy[2*i + 1].d = 0;
			lazy[2*i + 1].a2 = 0;
		}
		return ;
	}
	update3( 2*i , b , (b + c )/ 2 , s , e  , v );
	update3( 2*i + 1 , ( (b + c )/ 2 + 1 ) , c , s , e , v );
	tree[i] = (tree[2*i] + tree[2*i + 1])%mod;
}
Пример #2
0
int main(){   
	ll   r;
	int t , n  , h , q , i , s , e , type,v;
		scanf("%d%d" , &n , &q);
		h = (ceil)( log2(n));
		size = 1<<( h + 1);
		for ( i = 1 ; i < size ; i++)
		{
			tree[i] = 0 ;
			clear(i);
		}
		for ( i = 0 ; i < n ; i++)
		{
			scanf("%d",&a[i]);
		}
		create( 1 , 0 , n - 1);
		while(q--)
		{
			scanf("%d" ,&type);
			if ( type == 2)
			{
				scanf("%d%d%d" , &s , &e,&v);
				s--;
				e--;
				v%=mod;
				update1( 1 , 0 , n-1 ,s , e,v);
			}
			else if ( type == 1)
			{
				scanf("%d%d%d" , &s , &e , &v);
				s--;
				e--;
				v%=mod;
				update2( 1 , 0 , n - 1 , s , e , v);
			}
			else if ( type == 3)
			{
				scanf("%d%d%d" , &s , &e , &v);
				s--;
				e--;
				v%=mod;
				update3( 1 , 0 , n - 1 , s , e , v);
			}
			else
			{
				scanf("%d%d" , &s , &e);
				s--;
				e--;
				r = query( 1 , 0 , n-1 ,s , e );
				printf("%lld" , r);
				printf("\n");
			}
		}
	return 0 ;
}
Пример #3
0
int Enemy::update()
{
	if (hittimer > 0)
	{
		hittimer--;
		if (hittimer == 0)
		{
			state = 0;
		}
	}

	if (parent->player != NULL)
	{
		double delta = x - parent->player->getx();
		if (fabs (delta) > 1000)
			return 0; // out of range, don't update.
	}

	phase = (phase + 1) % period;

	SpriteEx::update();
	switch (enemyType)
	{
	case 0:
		update1();
		break;
	case 1:
		update2();
		break;
	case 2:
		update3();
		break;
	case 3:
		update4();
		break;
	}

	return 0;
}