Submission #557024

# Submission time Handle Problem Language Result Execution time Memory
557024 2022-05-04T15:04:46 Z rainboy Sterilizing Spray (JOI15_sterilizing) C
5 / 100
5000 ms 2996 KB
#include <stdio.h>
 
#define N	100000
#define N_	(1 << 17)	/* N_ = pow2(ceil(log2(N))) */
 
long long st[N_ * 2]; int n_, d;
 
void pul(int i) {
	st[i] = st[i << 1 | 0] + st[i << 1 | 1];
}
 
void build(int *aa, int n) {
	int i;
 
	n_ = 1;
	while (n_ < n)
		n_ <<= 1;
	for (i = 0; i < n; i++)
		st[n_ + i] = aa[i];
	for (i = n_ - 1; i > 0; i--)
		pul(i);
}
 
void pull(int i) {
	while (i > 1)
		pul(i >>= 1);
}

void upd(int i, int x) {
	i += n_, st[i] = x, pull(i);
}
 
void update_(int i) {
	if (st[i] == 0)
		return;
	if (i >= n_) {
		st[i] /= d;
		return;
	}
	update_(i << 1 | 0), update_(i << 1 | 1);
	pul(i);
}
 
void update(int l, int r) {
	int l_ = l += n_, r_ = r += n_;

	for ( ; l <= r; l >>= 1, r >>= 1) {
		if ((l & 1) == 1)
			update_(l++);
		if ((r & 1) == 0)
			update_(r--);
	}
	pull(l_), pull(r_);
}
 
long long query(int l, int r) {
	long long x = 0;
 
	for (l += n_, r += n_; l <= r; l >>= 1, r >>= 1) {
		if ((l & 1) == 1)
			x += st[l++];
		if ((r & 1) == 0)
			x += st[r--];
	}
	return x;
}
 
int main() {
	static int aa[N];
	int n, q, i;
 
	scanf("%d%d%d", &n, &q, &d);
	for (i = 0; i < n; i++)
		scanf("%d", &aa[i]);
	build(aa, n);
	while (q--) {
		int t, x, l, r;
 
		scanf("%d", &t);
		if (t == 1) {
			scanf("%d%d", &i, &x), i--;
			upd(i, x);
			aa[i] = x;
		} else {
			scanf("%d%d", &l, &r), l--, r--;
			if (t == 2) {
				if (d > 1)
					update(l, r);
				for (i = l; i <= r; i++)
					aa[i] /= d;
			} else {
				long long sum;
 
				sum = 0;
				for (i = l; i <= r; i++)
					sum += aa[i];
				printf("%lld\n", sum);
			}
		}
	}
	return 0;
}

Compilation message

sterilizing.c: In function 'main':
sterilizing.c:72:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   72 |  scanf("%d%d%d", &n, &q, &d);
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
sterilizing.c:74:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   74 |   scanf("%d", &aa[i]);
      |   ^~~~~~~~~~~~~~~~~~~
sterilizing.c:79:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   79 |   scanf("%d", &t);
      |   ^~~~~~~~~~~~~~~
sterilizing.c:81:4: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   81 |    scanf("%d%d", &i, &x), i--;
      |    ^~~~~~~~~~~~~~~~~~~~~
sterilizing.c:85:4: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   85 |    scanf("%d%d", &l, &r), l--, r--;
      |    ^~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 212 KB Output is correct
2 Correct 2 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 5 ms 336 KB Output is correct
5 Correct 8 ms 368 KB Output is correct
6 Correct 7 ms 368 KB Output is correct
7 Correct 7 ms 340 KB Output is correct
8 Correct 7 ms 340 KB Output is correct
9 Correct 8 ms 340 KB Output is correct
10 Correct 8 ms 340 KB Output is correct
11 Correct 7 ms 340 KB Output is correct
12 Correct 8 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4037 ms 2112 KB Output is correct
2 Correct 2513 ms 1580 KB Output is correct
3 Correct 3984 ms 2388 KB Output is correct
4 Execution timed out 5068 ms 2684 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 145 ms 548 KB Output is correct
2 Correct 330 ms 1236 KB Output is correct
3 Correct 532 ms 1316 KB Output is correct
4 Correct 1152 ms 988 KB Output is correct
5 Correct 4629 ms 2616 KB Output is correct
6 Correct 4564 ms 2516 KB Output is correct
7 Correct 4610 ms 2620 KB Output is correct
8 Correct 4625 ms 2536 KB Output is correct
9 Execution timed out 5076 ms 2468 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1857 ms 1520 KB Output is correct
2 Correct 2167 ms 1596 KB Output is correct
3 Correct 1183 ms 1356 KB Output is correct
4 Correct 1469 ms 1100 KB Output is correct
5 Correct 4645 ms 2740 KB Output is correct
6 Correct 4675 ms 2728 KB Output is correct
7 Correct 4740 ms 2996 KB Output is correct
8 Correct 4691 ms 2700 KB Output is correct
9 Execution timed out 5053 ms 2784 KB Time limit exceeded
10 Halted 0 ms 0 KB -