https://www.acmicpc.net/problem/8980
8980번: 택배
입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이
www.acmicpc.net
티어 : 골드1
struct 구조체와 std sort를 활용해 택배가 도착하는 마을의 번호가 작은 배달 순서로, 도착 마을의 번호가 같다면 출발 마을의 번호가 큰 순서대로 정렬하였다.
정렬된 순서대로 배달을 진행하여 답을 구하였다.
#include<stdio.h>
#include<algorithm>
using namespace std;;
int n, c, m, ans;
int box[2005];
typedef struct{
int s, e, cnt;
} transport;
transport arr[10005];
bool condition(transport &i, transport &j){
if(i.e < j.e) return true;
else if(i.e == j.e && i.s > j.s) return true;
return false;
}
int main()
{
scanf("%d %d", &n ,&c);
scanf("%d", &m);
for(int i=0 ; i<m ; i++) scanf("%d %d %d", &arr[i].s, &arr[i].e, &arr[i].cnt);
sort(arr, arr+m, condition);
for(int i=0 ; i<m ; i++){
int findmax = 100000;
for(int j=arr[i].s ; j<arr[i].e ; j++){
findmax = min(findmax, min(box[j]+arr[i].cnt, c) - box[j]);
}
for(int j=arr[i].s ; j<arr[i].e ; j++){
box[j] += findmax;
}
ans += findmax;
}
printf("%d", ans);
}
'BOJ' 카테고리의 다른 글
1086. 박성원 (0) | 2023.07.20 |
---|---|
10868. 최솟값 (0) | 2023.07.19 |
1300. K번째 수 (0) | 2023.07.18 |
2042. 구간 합 구하기 (0) | 2023.07.18 |
8983. 사냥꾼 (0) | 2023.06.28 |