하나 둘 셋
시간 제한2초메모리 제한1024 MB
1, 2, 3으로만 이루어진 배열에서 (i<j<k)가 1,2,3 또는 3,2,1이 되는 서로 겹치지 않는 순서쌍을 최대 개수만큼 찾아 보고한다.
문제
길이가 인 배열 가 있다. 이 배열은 , , 세 값으로만 이루어져 있다. 우리는 이 배열에서 다음 조건을 만족하는 세 인덱스의 순서쌍 들을 최대한 많이 찾으려고 한다. 배열의 세 인덱스 , , , ()에 대해서 , , 이거나, , , 이어야 한다. 단, 한 인덱스는 최대 한 개의 순서쌍에만 들어갈 수 있다.
예를 들어 이 주어졌다고 하자. 조건을 만족하는 답은 , 가 된다. (, , 이고 , , )
가 주어졌을 때, 조건을 만족하는 순서쌍을 최대한 많이 찾아서 보고하는 프로그램을 작성하라.
여러분은 다음 함수를 작성하여야 한다.
void maximize( vector<int> A ):A는 길이 인 vector로, , , 세 값으로만 이루어 져 있다.maximize는A에서 문제의 조건에 맞는 순서쌍 들을 최대한 많이 찾아내고, 찾아낸 하나마다 grader의answer(int i, int j, int k)함수를 정확하게 한 번 호출한다. 최대 개수의 순서쌍들을 찾는 방법이 여러 가지인 경우 그 중 어떤 것을 찾아도 좋다. 또, 순서쌍들끼리의 호출 순서는 무시된다. 즉, 문제의 예에서는answer(0, 1, 4)를 호출하고answer(2, 3, 5)를 호출해도 되고,answer(2, 3, 5)를 호출한 후answer(0, 1, 4)를 호출해도 된다.
제한
예제
이 문제는 공개된 예제가 없습니다.