그레고리와 은행
시간 제한2초메모리 제한256 MB
고정된 입금액과 송금액, 그리고 입금일과 송금일 일정이 주어질 때, 각 이체를 날짜에 배정해 송금받는 공급자 수를 최대로 한다.
문제
그레고리는 큰 회사의 회계팀에서 일한다. 고객에게서 계좌 이체로 돈을 받고, 납품업체에 계좌 이체로 돈을 보낸다.
모든 이체는 도시에 하나뿐인 은행 지점에서 처리된다. 이 지점의 영업 방식은 특이하다. 하루에 허용되는 이체 종류가 한 가지뿐이어서, 어떤 날은 받는 이체만 되고 어떤 날은 보내는 이체만 된다. 게다가 그레고리가 하루에 처리할 수 있는 이체는 최대 한 건이고, 그 종류는 그날 지점이 허용하는 종류여야 한다. 이체 상대는 그레고리가 자유롭게 고른다. 상사는 그레고리가 아무것도 하지 않는 것을 싫어해서 매일 은행에 가서 이체를 시도하라고 요구한다.
그레고리가 처리해야 할 요청은 고객에게서 돈을 받는 요청 개와 납품업체에 돈을 보내는 요청 개다. 지점의 일정을 미리 알고 있으므로 각 고객과 각 납품업체의 이체 날짜를 직접 정한다. 일정에는 받는 날이 정확히 일, 보내는 날이 정확히 일 있어서 모든 요청이 서로 다른 날에 하나씩 배정된다.
그레고리가 관리하는 계좌의 처음 잔액은 0이다. 받는 날에는 그날 배정한 고객의 금액이 잔액에 더해진다. 보내는 날에는 그날 배정한 납품업체에 그 금액을 보내는데, 잔액이 보낼 금액보다 적으면 이체가 취소된다. 이때 계좌에서 돈은 한 푼도 나가지 않고 그레고리는 질책을 듣는다. 그 납품업체는 거래를 끊어 버리므로 나중에 다시 보낼 수도 없다.
돈을 보내지 못하는 납품업체의 수가 최소가 되는 배정을 찾아라.
입력
첫째 줄에 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스는 다음 형식으로 주어진다. 첫째 줄에 고객의 수 과 납품업체의 수 ()이 주어진다. 둘째 줄에 개의 정수 ()가 주어지며, 는 번째 고객이 그레고리의 회사에 보내는 금액이다. 셋째 줄에 개의 정수 ()가 주어지며, 는 번째 납품업체에 보내야 하는 금액이다. 넷째 줄에 길이가 인 문자열 가 주어진다. 는 + 개와 - 개로 이루어져 있다. 의 번째 문자가 +이면 번째 날에 돈을 받을 수 있고, -이면 번째 날에 돈을 보낼 수 있다.
출력
각 테스트 케이스마다 그레고리가 돈을 보내지 못하는 납품업체 수의 최솟값을 한 줄에 하나씩 출력한다.