// ================================
// 1번 문제
// 거리 차이가 K 이하인 쌍 개수 구하기
// ================================

/*

[문제]

수직선 위에 집들의 좌표가 주어진다.
거리 차이가 K 이하인 학생 쌍의 개수를 구하여라.

[입력]
5 3
1 4 6 8 12

[출력]
4

*/


// ================================
// 2번 문제
// 정렬 후 투포인터
// ================================

/*

[문제]

학생들의 집 좌표가 정렬되지 않은 상태로 주어진다.
거리 차이가 K 이하인 학생 쌍의 개수를 구하여라.

[입력]
6 4
10 1 7 3 15 8

[출력]
5

*/


// ================================
// 3번 문제
// 각 학생의 친구 수 구하기
// ================================

/*

[문제]

학생 N명의 집 좌표가 주어진다.

각 학생마다 거리 차이가 K 이하인 친구가 몇 명인지 출력하여라.
자기 자신은 제외한다.

[입력]
5 3
1 4 6 8 12

[출력]
1 2 2 1 0

*/


// ================================
// 4번 문제
// KOI 축소판
// ================================

/*

[문제]

학생들의 집 좌표와 학교 번호가 주어진다.

- 같은 학교면 거리 <= K1
- 다른 학교면 거리 <= K2

일 때 각 학생의 친구 수를 구하여라.

[입력]
5 5 2
1 1
3 2
6 1
8 2
10 1

[출력]
2 1 2 1 2

*/


// ================================
// 구조체 예시
// ================================

/*

struct Student {
    int x;       // 집 좌표
    int school;  // 학교 번호
    int idx;     // 원래 번호
};

*/


// ================================
// 투포인터 핵심 코드 예시
// ================================

/*

while (x[right] - x[left] > K) {
    left++;
}

*/


// ================================
// 핵심 개념 정리
// ================================

/*

1. 거리 문제는 정렬을 생각하기

2. 정렬하면 abs 제거 가능

abs(x[i] - x[j])

↓

x[right] - x[left]

3. 거리 제한 문제는 투포인터 자주 사용

4. 관련 데이터는 struct로 묶기

*/

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: