답안 #158428

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
158428 2019-10-17T03:07:32 Z luciocf Lightning Conductor (POI11_pio) C++17
63 / 100
1000 ms 45620 KB
#include <bits/stdc++.h>

#pragma GCC optimize("Ofast")

using namespace std;
 
const int maxn = 5e5+10;
const int maxl = 21;
 
int n;
int a[maxn];
 
int tab[maxn][maxl];
int lg[maxn];
 
void build(void)
{
	lg[1] = 0;
	for (int i = 2; i < maxn; i++)
		lg[i] = lg[i/2]+1;
 
	for (int i = 1; i <= n; i++)
		tab[i][0] = a[i];
 
	for (int j = 1; j < maxl; j++)
		for (int i = 1; i + (1<<j) <= n+1; i++)
			tab[i][j] = max(tab[i][j-1], tab[i+(1<<(j-1))][j-1]);
}
 
int mx(int l, int r)
{
	int j = lg[r-l+1];
 
	return max(tab[l][j], tab[r-(1<<j)+1][j]);
}
 
int main(void)
{
	scanf("%d", &n);
 
	for (int i = 1; i <= n; i++)
		scanf("%d", &a[i]);
 
	build();
 
	for (int i = 1; i <= n; i++)
	{
		int k = 0;
 
		for (int d = 1; (d-1)*(d-1) <= i; d++)
		{
			int l = max(1, i - d*d);
			int r = min(i-1, i - d*d + 2*d - 2);
 
			if (l > r) break;
 
			k = max(k, mx(l, r) + d);
		}
 
		for (int d = 1; (d-1)*(d-1) <= n-i; d++)
		{
			int l = max(i+1, d*d - 2*d + i + 2);
			int r = min(n, i + d*d);
 
			if (l > r) break;
 
			k = max(k, mx(l, r) + d);
		}
 
		printf("%d\n", max(0, k-a[i]));
	}
}

Compilation message

pio.cpp: In function 'int main()':
pio.cpp:39:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
pio.cpp:42:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a[i]);
   ~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 2296 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 2296 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 2296 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 95 ms 5168 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 195 ms 7152 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 278 ms 8312 KB Output is correct
2 Correct 284 ms 8144 KB Output is correct
3 Correct 276 ms 8440 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 547 ms 11344 KB Output is correct
2 Correct 521 ms 11256 KB Output is correct
3 Correct 543 ms 11720 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1066 ms 22504 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1073 ms 33108 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1064 ms 45620 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1053 ms 45608 KB Time limit exceeded
2 Halted 0 ms 0 KB -