각 레벨 상점에서 에너지 팩을 사서 모든 레벨을 순서대로 가장 적은 현금으로 통과합니다.
보통7동적 계획법세그먼트 트리누적 합이분 탐색아직 제출이 없습니다시간 제한3초메모리 제한256 MB게임 회사가 새 게임기와 함께 내놓는 게임 Adventures of Captain Mikado를 만들고 있다. 이 게임에는 레벨이 N개 있고 1번부터 N번까지 번호가 붙어 있다. i번 레벨을 깨려면 에너지가 정확히 Ei만큼 든다. 즉 i번 레벨을 시작하는 시점의 에너지가 Ei 이상이어야 하고, 레벨을 깨고 나면 에너지가 정확히 Ei만큼 줄어든다. 게임을 이기려면 1번 레벨부터 N번 레벨까지 번호 순서대로 모두 깨야 하고, 이미 깬 레벨로 되돌아갈 수 없다.
플레이어는 에너지 0으로 시작한다. 에너지는 레벨 곳곳에 흩어져 있는 상점 M개에서 에너지 팩을 사서 얻는다. 상점마다 강도가 S이고 가격이 C인 에너지 팩을 한 종류 판다. 플레이어는 지금 있는 레벨의 상점에서만, 그 레벨을 시작하기 전에 에너지 팩을 살 수 있다. 강도가 S인 팩을 사면 직전 에너지가 얼마였든 에너지가 곧바로 S가 된다.
레벨 N개를 모두 깨는 데 드는 게임 내 화폐의 최솟값을 구하라.
첫째 줄에 레벨 수 N과 상점 수 M이 주어진다 (1≤N,M≤105).
둘째 줄에 정수 N개 E1,E2,…,EN이 주어진다. Ei는 i번 레벨을 깨는 데 드는 에너지이다 (1≤Ei≤104).
다음 M개 줄에는 상점 하나를 나타내는 정수 L, S, C가 주어진다. L은 상점이 있는 레벨 번호, S와 C는 그 상점이 파는 에너지 팩의 강도와 가격이다 (1≤L≤N, 1≤S≤109, 1≤C≤104).
레벨 N개를 모두 깨는 데 필요한 게임 내 화폐의 최솟값을 한 줄에 출력한다. 모든 레벨을 깨는 것이 불가능하면 -1을 출력한다.