long long query( int node, int left, int right)
{
    if ( start[node] == finish[node] )
    {
        return value[node];
    }
    if ( left == start[node] && right == finish[node] )
    {
        return value[node];
    }
    long long result = 0l;
    if ( left <= middle[node] )
    {
        result += query(node*2, left, miN(middle[node], right));
    }
    if ( right >= middle[node] +1 )
    {
        result += query(node*2+1, maX(left, middle[node]+1), right);
    }
    return result;
}
long long setV(int node, int left, int right, int v)
{
    long long change;
    if ( start[node] == finish[node] )
    {
        arr[start[node]-1] = v;
        change = value[node];
        value[node] = (long long)(v);
        value[node] *= value[node];
        return -change + value[node];
    }
    change = 0l;
    if ( left <= middle[node])
    {
        change += setV(node*2, left, miN(middle[node], right), v );
    }
    if ( right >= middle[node] +1 )
    {
        change += setV(node*2+1, maX(middle[node]+1 , left),right, v );
    }
    value[node] += change;
    return change;
}
예제 #3
0
void solve() {

	for(u = 0; u < 55; u++)
		car[u] = -1;
	wait = 0, completed = 0;
	//cin >> N >> M >> wait >> p >> r >> k;
	N = readInt();
	M = readInt();
	wait = readInt();
	p = readInt();
	r = readInt();
	k = readInt();
	//Sf("%d %d %d %d %d %d", &N, &M, &wait, &p, &r, &k);

	for(u = 0; u < miN(wait, N); u++) {
//	forn(i, miN(wait, N)) {
		car[u] = 0;
		wait--;
	}

	for(i = 1; i <= k; i++) {
		if(M > 0 && i % r == 0) {
			M--;
			wait++;
		}

		for(j = 0; j < N; j++) {
			if(car[j] > -1) {
				car[j]++;
			}
			if(car[j] == p) {
				car[j] = -1;
				completed++;
			}
			if(wait > 0 && car[j] == -1) {
				wait--;
				car[j] = 0;
			}
		}
/*
		for(j = 0; j < N; j++)	if(car[j] == p) {
//		forn(j, N)	if(car[j] == p) {
			car[j] = -1;
			completed++;
		}
*/
/*
		//forn(j, N)	if(wait > 0 && car[j] == -1) {
		for(j = 0; j< N; j++)	if(wait > 0 && car[j] == -1) {
			wait--;
			car[j] = 0;
		}
*/
	}
	cnt = 0;
	for(i = 0; i < N; i++)
//	forn(i, N)
		if(car[i] == -1)
			cnt++;
	Pf("%d %d %d %d\n", cnt, completed, M, wait);
}