VioletaBabel
블럭 없애기 (실패) 본문
#include<cstdio>
using namespace std;
int main(int argc, char** argv)
{
int Answer, *tower, temp[3];
long long total;
int T, test_case, n, now;
setbuf(stdout, NULL);
scanf("%d", &T);
for (test_case = 0; test_case < T; test_case++)
{
total = 0, Answer = 0, now = 0;
scanf("%d", &n);
tower = new int[n];
for (int i = 0; i < n; ++i)
{
scanf("%d", &tower[i]);
total += tower[i];
}
while (total != 0)
{
for(int i = 0; i < 3; ++i)
temp[i] = tower[now+i];
for (int i = now + 1, j = 0; i < n - (now + 2); ++i, j = 0)
{
if (temp[0] < temp[1])
j = temp[1] - temp[0];
if (temp[2] < temp[1])
j = (j > (temp[1] - temp[2])) ? j : (temp[1] - temp[2]);
else if (j == 0)
j = 1;
total -= j;
tower[i] -= j;
temp[0] = temp[1];
temp[1] = temp[2];
temp[2] = tower[i + 2];
}
total = (total - (tower[now] + tower[n - (1 + now)]));
tower[now] = 0;
tower[n - (1 + now++)] = 0;
++Answer;
}
printf("Case #%d\n%d\n", test_case + 1, Answer);
delete[] tower;
}
return 0;
}
============다른 통과자랑 메모리 뜨는 값이 같은데 왜 나는 메모리 초과가 뜨는가.. 어떤 사람은 나보다 높던데..
'알고리즘문제들 > codeground' 카테고리의 다른 글
체스판 위의 길 (실패) (0) | 2017.06.17 |
---|---|
화학자의 문장 (99점) (0) | 2017.06.16 |
미궁 속의 방 (0) | 2017.06.16 |
다트 게임 (0) | 2017.06.16 |
시험 공부 (0) | 2017.06.16 |