본문 바로가기
Computer Science

프양연 프리랜서

by OKOK 2019. 1. 11.

1. 퀵소트

2. 정리해서 테스크 배열 만들기

3. 그리고 아래 배열을 만들어서 그렇게 알고리즘 구현 하는 방법 있음

4. 좋은 코드 인정 


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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
 
#define START 0
#define END 1
#define MONEY 2
 
#define N_L 10
#define M_L 11
 
int taskN, day;
int task[N_L][3];
int money[M_L];
 
void init()
{
 
}
 
void input()
{
    scanf("%d %d"&taskN, &day);
 
    for (int i = 1; i <= taskN; i++)
    {
        scanf("%d %d %d"&task[i][START], &task[i][END], &task[i][MONEY]);
    }
}
 
void swap(int a, int b)
{
    int start = task[a][START];
    int end = task[a][END];
    int money = task[a][MONEY];
    task[a][START] = task[b][START];
    task[a][END] = task[b][END];
    task[a][MONEY] = task[b][MONEY];
    task[b][START] = start;
    task[b][END] = end;
    task[b][MONEY] = money;
}
 
void qsort(int left, int right)
{
    if (left < right)
    {
        int p = left;
        int p_val = task[right][END];
 
        for (int i = left; i < right; i++)
        {
            if (task[i][END] <= p_val)
                swap(p++, i);
        }
        swap(p, right);
 
        qsort(left, p - 1);
        qsort(p + 1, right);
    }
}
 
void solve()
{
    qsort(1, taskN);
 
    int tn = 1;
    money[0= 0;
 
    for (int d = 1; d <= day; d++)
    {
        int maxMoney = money[d - 1];
 
        while (task[tn][END] == d)
        {
            int m = task[tn][MONEY] + money[task[tn][START] - 1];
            if (maxMoney < m)
                maxMoney = m;
            tn++;
        }
 
        money[d] = maxMoney;
    }
 
    printf("%d", money[day]);
}
 
int main(void)
{
    freopen("input.txt""r", stdin);
    int test_case;
    int T;
 
    setbuf(stdout, NULL);
    scanf("%d"&T);
 
    for (test_case = 1; test_case <= T; ++test_case)
    {
        printf("#%d ", test_case);
 
        init();
        input();
        solve();
 
        printf("\n");
    }
    return 0;
}
 
cs

 


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

Graph  (0) 2019.01.14
Tree  (0) 2019.01.14
프양연 두 번 이상 등장하는 문자열  (0) 2019.01.08
프양연 단어가 등장하는 횟수  (0) 2019.01.08
문자열 베이어 무어 / 계산 기하학  (0) 2019.01.03

댓글