답안 #90276

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
90276 2018-12-21T04:15:43 Z YottaByte 원숭이와 사과 나무 (IZhO12_apple) C++14
0 / 100
435 ms 131912 KB
#include <bits/stdc++.h>
using namespace std;

const int N = 1e7 + 1;
int t[4 * N], h[4 * N], c;

void push(int v, int l, int r)
{
	if(!h[v]) return;
	if(l == r)
	{
		t[v] = (r - l + 1) * h[v];
		h[v] = 0;
		return;
	}
	else
	{
		t[v] = (r - l + 1) * h[v];
		h[v + v] = h[v];
		h[v + v + 1] = h[v];
		h[v] = 0;
		return;
	}
}

void upd(int v, int l, int r, int ql, int qr)
{
	int mid = l + r >> 1;
	if(r < ql || l > qr) return;
	if(ql <= l && r <= qr)
	{
		h[v] = 1;
		push(v, l, r);
		return;
	}
	else
	{
		upd(v + v, l, mid, ql, qr);
		upd(v + v + 1, mid + 1, r, ql, qr);
	}
	
	push(v + v, l, mid);
	push(v + v + 1, mid + 1, r);
	
	t[v] = t[v + v] + t[v + v + 1];
}

int getsum(int v, int l, int r, int ql, int qr)
{
	push(v, l, r);
	if(r < ql || l > qr) return 0;
	if(ql <= l && r <= qr)
	{
		return t[v];
	}
	else
	{
		int mid = l + r >> 1;
		return getsum(v + v, l, mid, ql, qr) + getsum(v + v + 1, mid + 1, r, ql, qr);
	}
}

main()
{
	int m; cin >> m;
	while(m--)
	{
		int d, l, r;
		cin >> d >> l >> r;
		if(d % 2)
		{
			c = getsum(1, 1, N, l + c, r + c);
			if(r + c > N - 1) assert(0);
			cout << c << endl;
		}
		else
		{
			upd(1, 1, N, l + c, r + c);
		}
	}
}
/*
6
2 1 7
2 10 12
1 7 11
2 11 13
1 8 10
1 15 17
*/

Compilation message

apple.cpp: In function 'void upd(int, int, int, int, int)':
apple.cpp:28:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  int mid = l + r >> 1;
            ~~^~~
apple.cpp: In function 'int getsum(int, int, int, int, int)':
apple.cpp:58:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int mid = l + r >> 1;
             ~~^~~
apple.cpp: At global scope:
apple.cpp:63:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 500 KB Output is correct
3 Correct 2 ms 576 KB Output is correct
4 Correct 39 ms 20576 KB Output is correct
5 Correct 46 ms 23480 KB Output is correct
6 Correct 44 ms 23480 KB Output is correct
7 Correct 46 ms 23480 KB Output is correct
8 Correct 262 ms 103532 KB Output is correct
9 Correct 435 ms 131912 KB Output is correct
10 Runtime error 48 ms 131912 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Halted 0 ms 0 KB -