답안 #574388

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
574388 2022-06-08T13:08:37 Z wjajjsasqq 사탕 분배 (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;
}
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 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 -
# 결과 실행 시간 메모리 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 -
# 결과 실행 시간 메모리 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 -