Submission #574398

# Submission time Handle Problem Language Result Execution time Memory
574398 2022-06-08T13:14:56 Z wjajjsasqq Distributing Candies (IOI21_candies) C++17
38 / 100
2483 ms 9696 KB
#include "candies.h"
#include <algorithm>
#include <cstdio>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")

const int INF = 1070000000;

const int N = 200008;
int n, a[N], c[N], C, res[N];
long long inc[N];

std::vector<int> distribute_candies(std::vector<int> c_, std::vector<int> l, std::vector<int> r, std::vector<int> v) {
	n = (int)c_.size();
	std::vector<int> ans(n);
	for (int i = 0; i < n; ++i) c[i] = c_[i];
	if (n <= 2000 && l.size() <= 2000) {
		for (int i = 0; i < (int)l.size(); ++i) {
			int ll = l[i], rr = r[i] + 1, d = v[i];
			for (int j = ll; j < rr; ++j) a[j] += d;
			if (d > 0) {
				for (int j = ll; j < rr; ++j) a[j] = a[j] < c[j] ? a[j] : c[j];
			} else {
				for (int j = ll; j < rr; ++j) a[j] = a[j] < 0 ? 0 : a[j];
			}
		}
		for (int i = 0; i < n; ++i) ans[i] = a[i];
	} else {
		bool pos = 1;
		for (int i = 0; i < (int)v.size(); ++i) if (v[i] < 0) pos = 0;
		if (pos) {
			for (int i = 0; i < (int)l.size(); ++i) {
				inc[l[i]] += v[i];
				inc[r[i] + 1] -= v[i];
			}
			for (int i = 0; i < n; ++i) {
				if (i) inc[i] += inc[i - 1];
				ans[i] = std::min((long long)c[i], inc[i]);
			}
		} else {
			C = c_[0];
			for (int i = 0; i < (int)l.size(); ++i) {
				int ll = l[i], rr = r[i] + 1, d = v[i];
				//for (int j = ll; j < rr; ++j) res[j] += d;
				if (d < 0) {
					for (int j = ll; j < rr; ++j) res[j] = res[j] + d < 0 ? 0 : res[j] + d;
				}
				else {
					for (int j = ll; j < rr; ++j) res[j] = res[j] + d < C ? res[j] + d : C;
				}
			}
			for (int j = 0; j < n; ++j) ans[j] = res[j];
		}
	}
	return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 3 ms 324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 94 ms 9696 KB Output is correct
2 Correct 92 ms 9676 KB Output is correct
3 Correct 97 ms 9664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 72 ms 5052 KB Output is correct
3 Correct 70 ms 5328 KB Output is correct
4 Correct 2475 ms 8932 KB Output is correct
5 Correct 2458 ms 9028 KB Output is correct
6 Correct 2441 ms 8936 KB Output is correct
7 Correct 2483 ms 8928 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Incorrect 121 ms 5052 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 3 ms 324 KB Output is correct
6 Correct 94 ms 9696 KB Output is correct
7 Correct 92 ms 9676 KB Output is correct
8 Correct 97 ms 9664 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 72 ms 5052 KB Output is correct
11 Correct 70 ms 5328 KB Output is correct
12 Correct 2475 ms 8932 KB Output is correct
13 Correct 2458 ms 9028 KB Output is correct
14 Correct 2441 ms 8936 KB Output is correct
15 Correct 2483 ms 8928 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 1 ms 212 KB Output is correct
18 Incorrect 121 ms 5052 KB Output isn't correct
19 Halted 0 ms 0 KB -