fork download
  1. #include <iostream>
  2. #include <deque>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int n, m, sum = 0;
  9. int *arr;
  10.  
  11. cin >> n >> m;
  12. arr = new int[m];
  13. deque <int> d;
  14. for (int i = 0; i < n; i++) //1부터 n까지 입력
  15. d.push_back(i + 1);
  16.  
  17. for (int i = 0; i < m; i++) //찾고자하는 수 입력
  18. cin >> arr[i];
  19.  
  20. for (int i = 0; i < m; i++)
  21. {
  22. int cnt1 = 0, cnt2 = 0;
  23. deque <int> d1(d);
  24. deque <int> d2(d);
  25.  
  26. while (d1.front() != arr[i]) //오른쪽 방향으로 진행
  27. {
  28. d1.push_back(d1.front());
  29. d1.pop_front();
  30. cnt1++;
  31. }
  32.  
  33. while (d2.back() != arr[i]) //왼쪽 방향으로 진행
  34. {
  35. d2.push_front(d2.back());
  36. d2.pop_back();
  37. cnt2++;
  38. }
  39.  
  40. if (cnt1 > cnt2) //왼쪽 방향으로 가는 것이 빠른 경우
  41. {
  42. sum += cnt2 + 1;
  43. d2.pop_back();
  44. d = d2;
  45. }
  46. else //오른쪽 방향으로 가는 것이 빠른 경우
  47. {
  48. sum += cnt1;
  49. d1.pop_front();
  50. d = d1;
  51. }
  52. }
  53. cout << sum;
  54. delete[]arr;
  55. }
Success #stdin #stdout 0s 5600KB
stdin
32 6
27 16 30 11 6 23
stdout
59