Submission #546543

# Submission time Handle Problem Language Result Execution time Memory
546543 2022-04-07T18:51:44 Z MilosMilutinovic A Huge Tower (CEOI10_tower) C++14
100 / 100
157 ms 15436 KB
#include <stdio.h>

#define N	1000000
#define MD	1000000009

int n, d, aa[N], bb[N];
long long dp[N];

void sort(int l, int r) {
	int i, cc0, cc1;
  
	if (l >= r)
		return;
	int m = (l + r) / 2;
	sort(l, m);
	sort(m + 1, r);
	cc0 = l, cc1 = m + 1;
	for (i = l; i <= r; i++)
		if (cc0 > m || (cc1 <= r && aa[cc0] > aa[cc1]))
			bb[i] = aa[cc1++];
		else
			bb[i] = aa[cc0++];
	for (i = l; i <= r; i++)
		aa[i] = bb[i];
}

int main() {
	int i, j;
  
	scanf("%d%d", &n, &d);
	for (i = 0; i < n; i++)
		scanf("%d", &aa[i]);
	sort(0, n - 1);
	for (i = 0, j = 0; i < n; i++) {
		while (aa[j] < aa[i] - d)
			j++;
		dp[i] = (i == 0 ? 1LL : dp[i - 1]) * (i - j + 1), dp[i] = (dp[i] % MD);
	}
	printf("%lld\n", dp[n - 1]);
	return 0;
}

Compilation message

tower.cpp: In function 'int main()':
tower.cpp:30:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |  scanf("%d%d", &n, &d);
      |  ~~~~~^~~~~~~~~~~~~~~~
tower.cpp:32:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |   scanf("%d", &aa[i]);
      |   ~~~~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 1064 KB Output is correct
2 Correct 18 ms 1548 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 68 ms 5400 KB Output is correct
2 Correct 80 ms 6568 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 156 ms 14808 KB Output is correct
2 Correct 157 ms 15436 KB Output is correct