일부 날에 재료를 사서 냉장고에 보관하다가 신선도가 L_i 이상인 뒤 날에 조리하며, (구매일 신선도 - 경과 일수) 곱하기 조리일 실력의 합을 최대로 만든다. N일에 조리할 수 없으면 Impossible을 출력한다.
어려움8동적 계획법그리디정렬투 포인터아직 제출이 없습니다시간 제한1초메모리 제한1024 MB재민이는 요리를 좋아한다. 그는 N일 동안 여러 조리법을 개발하려고 한다. 조리법을 개발하는 과정은 다음과 같다.
시장에서는 매일 새로운 종류의 식재료를 판다. i번째 날에 파는 식재료의 신선도는 Fi이다. 식재료를 사서 냉장고에 보관하면 하루가 지날 때마다 신선도가 1씩 줄어들므로, i번째 날에 산 식재료를 j번째 날에 꺼내면 신선도가 Fi−(j−i)이다. 냉장고에 식재료가 남아 있으면 재민이는 그 재료로 요리하기 전까지 새 식재료를 사지 않는다.
재민이의 i번째 날 요리실력은 Ci이다. 요리실력이 꾸준히 늘어서 i<j인 i, j에 대해 0<Ci≤Cj를 만족한다. 신선도가 F인 식재료를 냉장고에서 꺼내 요리실력 C로 요리하면 맛이 F×C인 요리가 만들어진다.
요리하는 날에는 친구 재현이를 초대한다. 재현이는 매우 위생적이어서 냉장고에 있는 식재료가 i번째 날에 Li 이상의 신선도를 가지기를 바란다. 냉장고에 있는 식재료가 그 기준을 채우지 못하면 재민이는 그날 요리하지 못한다. 재현이의 요구사항은 날마다 바뀌어서 N일 동안의 기준이 L1,L2,…,LN으로 주어진다.
새 요리를 만들고 나면 재민이는 다음 날 바로 시장에 가서 식재료를 사고 또 다른 조리법을 생각한다. 식재료가 냉장고에 있는 동안에는 조리법을 고안하며 요리를 미뤄도 되고, 식재료를 산 날 바로 요리해도 된다. 첫째 날에는 냉장고가 비어 있으므로 시장에 가서 식재료를 사고, N번째 날에는 반드시 요리해서 냉장고를 비운다.
재민이가 만드는 요리들의 맛의 합의 최댓값을 구하자. 재현이의 까탈스러운 요구사항 때문에 N번째 날에 냉장고를 비울 수 없다면 Impossible을 출력한다.
입력은 네 줄로 이루어진다.
첫째 줄에 N이 주어진다.
둘째 줄에 F1,F2,…,FN이 공백으로 구분되어 주어진다.
셋째 줄에 C1,C2,…,CN이 공백으로 구분되어 주어진다.
넷째 줄에 L1,L2,…,LN이 공백으로 구분되어 주어진다.
재민이가 만드는 요리들의 맛의 합의 최댓값을 출력한다.
N번째 날에 냉장고를 비울 수 없다면 Impossible을 출력한다.