Submission #574385

# Submission time Handle Problem Language Result Execution time Memory
574385 2022-06-08T13:04:15 Z wjajjsasqq Distributing Candies (IOI21_candies) C++17
11 / 100
5000 ms 9696 KB
#include "candies.h"
#include <algorithm>
#include <cstdio>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,tune=native")

const int INF = 1070000000;

const int N = 200005;
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) ans[j] += d;
				if (d < 0) for (int j = ll; j < rr; ++j) ans[j] = ans[j] < 0 ? 0 : ans[j];
				else for (int j = ll; j < rr; ++j) ans[j] = C < ans[j] ? C : ans[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 2 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 105 ms 9656 KB Output is correct
2 Correct 100 ms 9696 KB Output is correct
3 Correct 98 ms 9664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 94 ms 4956 KB Output is correct
3 Correct 96 ms 4524 KB Output is correct
4 Execution timed out 5048 ms 8148 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 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 140 ms 5044 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 2 ms 340 KB Output is correct
6 Correct 105 ms 9656 KB Output is correct
7 Correct 100 ms 9696 KB Output is correct
8 Correct 98 ms 9664 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 94 ms 4956 KB Output is correct
11 Correct 96 ms 4524 KB Output is correct
12 Execution timed out 5048 ms 8148 KB Time limit exceeded
13 Halted 0 ms 0 KB -