Submission #574388

# Submission time Handle Problem Language Result Execution time Memory
574388 2022-06-08T13:08:37 Z wjajjsasqq Distributing Candies (IOI21_candies) C++17
11 / 100
5000 ms 9704 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 = 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];
#pragma GCC ivdep
				for (int j = ll; j < rr; ++j) res[j] += d;
				if (d < 0) {
#pragma GCC ivdep
					for (int j = 0; j < n; ++j) res[j] = res[j] < 0 ? 0 : res[j];
				}
				else {
#pragma GCC ivdep
					for (int j = 0; j < n; ++j) res[j] = res[j] < C ? res[j] : 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 1 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 123 ms 9696 KB Output is correct
2 Correct 89 ms 9660 KB Output is correct
3 Correct 85 ms 9704 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 105 ms 4988 KB Output is correct
3 Correct 135 ms 5404 KB Output is correct
4 Execution timed out 5067 ms 8808 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 0 ms 212 KB Output is correct
3 Incorrect 119 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 1 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 123 ms 9696 KB Output is correct
7 Correct 89 ms 9660 KB Output is correct
8 Correct 85 ms 9704 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 105 ms 4988 KB Output is correct
11 Correct 135 ms 5404 KB Output is correct
12 Execution timed out 5067 ms 8808 KB Time limit exceeded
13 Halted 0 ms 0 KB -