답안 #22707

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
22707 2017-04-30T06:45:22 Z AJAE(#998, nona1314, adman, wowoto9772) Unifying Values (KRIII5_UV) C++14
0 / 7
0 ms 2252 KB
#include <iostream>
#include <algorithm>
#include <vector>

#define MOD 1000000007
#define ll long long

using namespace std;

ll d[10005];
ll nu[10005];
ll fact[10005] = { 1,1 };

int main() {
	freopen("output.txt", "r", stdin);

	for (int i = 2; i <= 10000; i++)
		fact[i] = (fact[i - 1] * i) % MOD;

	int n; 
	scanf("%d", &n);

	for (int i = 1; i <= n; i++) {
		scanf("%lld", &d[i]);
		nu[i] = nu[i - 1] + d[i];
	}
	ll ans = 0;
	int zerochk = 0;

	for (int i = 1; i < n; i++) {
		ll s = nu[i]; // ���͹�
		vector <ll> dp(n+1);
		dp[0] = 0, dp[1] = 1;
		int mx = 1;

		if (s == 0) {
			if (nu[n] != 0) continue;
		}
		if (s != 0) {
			if (nu[n] % s != 0) continue;
		}

		if (s == 0) {
			if (zerochk == 1) continue;
			zerochk = 1;
			int cnt = 0;
			ll nu = 0;
			for (int j = i + 1; j <= n; j++) {
				nu += d[j];
				if (nu == 0) cnt++;
			}
			ans = (ans +  fact[cnt]) % 1000000007;
		}
		else {
			for (int j = i + 1; j <= n; j++) {
				if (nu[j] % s == 0) {
					int x = nu[j] / s;
					if (x < 1) continue;
					if (mx >= x - 1) {
						dp[x] = (dp[x] + dp[x - 1]) % 1000000007;
						mx = max(x, mx);
					}
				}
			}
			if (mx >= nu[n] / s) ans = (ans + dp[nu[n] / s]) % 1000000007;
		}
	}
	printf("%lld", ans);
}

Compilation message

UV.cpp: In function 'int main()':
UV.cpp:15:35: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
  freopen("output.txt", "r", stdin);
                                   ^
UV.cpp:21:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
UV.cpp:24:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &d[i]);
                       ^
# 결과 실행 시간 메모리 Grader output
1 Runtime error 0 ms 2252 KB Execution killed because of forbidden syscall [unknown syscall - gap in table] (292)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 0 ms 2252 KB Execution killed because of forbidden syscall [unknown syscall - gap in table] (292)
2 Halted 0 ms 0 KB -