VioletaBabel

미궁 속의 방 본문

알고리즘문제들/codeground
미궁 속의 방
Beabletoet 2017. 6. 16. 20:03

#include<cstdio>

using namespace std;

long long Answer;

int main(int argc, char** argv)

{

setbuf(stdout, NULL);

char move[300001];

int T, test_case, x, y, n, k, temp;

scanf("%d", &T);

for (test_case = 0; test_case < T; test_case++)

{

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

x = y = 1;

Answer = 1;

scanf("%s", &move);

for (int i = 0; i < k; ++i, Answer += temp)

{

if (move[i] == 'U')

y -= 1;

else if (move[i] == 'D')

y += 1;

else if (move[i] == 'L')

x -= 1;

else

x += 1;

if (x + y < n + 2)

{

temp = (x + y)*(x + y - 1) / 2;//5*4/2 = 10

if ((x+y) % 2 == 1)

temp -= (x - 1);

else

temp -= (y - 1);

}

else

{

temp = (n*n + 1) - (((2 * n - (x + y - 1))*(2 * n - (x + y - 1) + 1)) / 2);

if ((x+y) % 2 == 1)

temp += (n - x);

else

temp += (n - y);

}

}

printf("Case #%d\n%lld\n", test_case + 1, Answer);

}

return 0;

}

'알고리즘문제들 > codeground' 카테고리의 다른 글

화학자의 문장 (99점)  (0) 2017.06.16
블럭 없애기 (실패)  (0) 2017.06.16
다트 게임  (0) 2017.06.16
시험 공부  (0) 2017.06.16
숫자 골라내기  (0) 2017.06.16
Comments