#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int main()
{
int H, K, R;
cin >> H >> K >> R;
int sum = 0;
for(int i = 0 ; i <= H ; i++)
{
sum += pow(2,i);
}
vector<vector<int>> Hmotors (sum+1,vector<int>());
vector<int> TF(sum,1);
for(int i = 0 ; i < pow(2,H) ; i++)
{
for(int j = 1; j <= K ; j++)
{
int A;
cin >> A;
Hmotors[i].push_back(A);
}
}
for(int i = 0; i < R ; i++)
{
int movepoint = 2;
for(int j = sum-1 ; j >= 0 ; j--)
{
if (Hmotors[j].size()!=0)
{
if (j < pow(2,H))
{
Hmotors[j+(movepoint/2)].push_back(Hmotors[j][0]);
Hmotors[j].erase(Hmotors[j].begin());
}
else if (i%2==0 && TF[j]==1)
{
Hmotors[j+(movepoint/2)].push_back(Hmotors[j][1]);
Hmotors[j].erase(Hmotors[j].begin()+1);
}
else
{
Hmotors[j+(movepoint/2)].push_back(Hmotors[j][0]);
Hmotors[j].erase(Hmotors[j].begin());
}
TF[j] = 0;
}
movepoint++;
}
}
int count = 0;
for (int i : Hmotors[sum])
{
count += i;
}
cout << count ;
return 0;
}
2차원 배열을 생성하여 업무를 저장하여 넘겨주는 방식입니다
예를 들어 3층 구조라고 하면 8+4+2+1+1 개의 행을 만들어 각각에 업무를 넣어준뒤
목표 인덱스에 업무를 넘겨주는 방식으로 구성하였습니다.
이때, 홀수 짝수 날을 구분하기 위해서 한번이라도 넘겨준적이 있는 인덱스는 받은 순서대로 넘겨주고, 한번도 넘겨준적이 없는 인덱스는 홀 짝수 날을 구분해서 넘겨주도록 하였습니다.
Subtask1 에서는 다 맞는데 Subtask2 에서는 몇개씩 틀립니다. 도저히 이유를 못찾겠어서 테스트 케이스라도 주시면 감사하겠습니다.