Submission #574387

# Submission time Handle Problem Language Result Execution time Memory
574387 2022-06-08T13:07:33 Z wjajjsasqq Distributing Candies (IOI21_candies) C++17
11 / 100
5000 ms 9708 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] = C < res[j] ? C : res[j];
				}
			}
			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 2 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 96 ms 9700 KB Output is correct
2 Correct 87 ms 9704 KB Output is correct
3 Correct 93 ms 9708 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 121 ms 5052 KB Output is correct
3 Correct 127 ms 5408 KB Output is correct
4 Execution timed out 5088 ms 8896 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Incorrect 122 ms 4968 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 96 ms 9700 KB Output is correct
7 Correct 87 ms 9704 KB Output is correct
8 Correct 93 ms 9708 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 121 ms 5052 KB Output is correct
11 Correct 127 ms 5408 KB Output is correct
12 Execution timed out 5088 ms 8896 KB Time limit exceeded
13 Halted 0 ms 0 KB -