본문 바로가기
Computer Science

무선 단속 카메라

by OKOK 2019. 2. 19.

1. 고속도로 단속 카메라

2. 일단 분할 해서

3. 거리마다 퀵소트를 정하고

4. 가장 먼 거리에 있는 것을 뺴고

5. 연결 갯수를 확인해서 더하면 끝 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include<stdio.h>
#define ll long long
#define MOD 1000000007
#define base 1000000
int n, k;
int in[10], data[10];
 
void quickSort(int x[], int L, int R)
{
    int i = L, j = R, tmp;
    int pivot = x[(L + R) / 2];
 
    while (i <= j)
    {
        while (x[i] > pivot)
            i++;
        while (x[j] < pivot)
            j--;
 
        if (i <= j)
        {
            tmp = x[i];
            x[i] = x[j];
            x[j] = tmp;
            i++, j--;
        }
    }
 
    if (L < j)
        quickSort(x, L, j);
    if (i < R)
        quickSort(x, i, R);
}
 
int main(void)
{
    int tc;
    freopen("input.txt""r", stdin);
    scanf("%d\n"&tc);
 
    for (int e = 1; e <= tc; e++) {
        scanf("%d"&n);
        scanf("%d"&k);
 
        for (int i = 0; i < n; i++) {
            scanf("%d"&in[i]);
        }
 
        quickSort(in, 0, n - 1);
 
        int len = 0;
        for (int i = n - 2; i > -1; i--)
            if (in[i] != in[i + 1])
                data[len++= in[i] - in[i + 1];
 
        quickSort(data, 0, len - 1);
 
        int ret = 0;
        if (k == 0) {
            printf("0\n");
            continue;
        }
        for (int i = k - 1; i < len; i++// 떨어진 구간이 4개 이므로, 3개를 연결하면 됨, 제일 먼 것 하나를 제거함
 
            ret += data[i];
        printf("%d\n", ret);
    }
    return 0;
}
 
cs

 


'Computer Science' 카테고리의 다른 글

영준이의 카드 카운팅  (0) 2019.02.19
영빈이의 대량할인  (0) 2019.02.19
제곱수의 합 계산하기  (0) 2019.02.18
빠른 휴대전화 키패드  (0) 2019.02.18
정식이의 은행업무  (0) 2019.02.18

댓글