리본 (Hard)
시간 제한1초메모리 제한1024 MB
정렬된 위치에 놓인 N개의 리본이 각각 길이와 R, Y, B 중 한 색을 가질 때, |Xi - Xj| <= Li + Lj를 만족하면서 색이 다른 두 리본을 찾는다.
문제
당신은 수직선 위에 묶여 있는 개의 리본들을 받았다. 번 리본은 수직선의 점 에 묶여 있고, 길이는 이다. 또한, 그 리본의 색은 이며 R, Y, B 중 하나이다. (R, Y, B는 각각 빨강, 노랑, 파랑을 나타낸다.)
이제 당신은 리본 두 개를 골라서 매듭을 지으려고 한다. 리본의 탄성이 좋지 않아서 길이를 늘릴 수는 없지만, 구부릴 수는 있다. 즉, 를 만족한다면 번째와 번째 리본으로 매듭을 지을 수 있다. (리본은 면적이 없는 선으로 가정하고 매듭 길이는 무시한다.) 묶인 매듭은 두 리본의 색이 다를 때, 즉 일 때 아름다운 매듭이라고 부른다.
아름다운 매듭을 지을 수 있는 두 리본의 번호를 구하는 프로그램을 작성하시오.
입력
첫 번째 줄에 정수 이 주어진다.
두 번째 줄에 개의 정수 , , , 이 주어진다.
세 번째 줄에 개의 정수 , , , 이 주어진다.
네 번째 줄에 개의 문자 , , , 이 주어진다.
출력
첫 번째 줄에 정답이 존재한다면 YES, 아니라면 NO를 출력한다.
정답이 존재한다면 두 번째 줄에 아름다운 매듭을 지을 수 있는 두 리본의 번호를 출력한다.
답이 여러 개 존재한다면 아무거나 출력해도 상관없다.
제한
- C\_i \in \\{
R,Y,B\\}