nihonium
/
mipt_clang
Archived
1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

58 lines
1.6 KiB
C

3 years ago
#include <stdio.h>
#include <stdlib.h>
/* O(n*log(n) + n), сортировка плюс проход по массиву заявок */
3 years ago
/* Структура для хранения заявки */
3 years ago
typedef struct application {
int begin;
int end;
} app;
int vector_compare(const void *a, const void *b);
int solve(app *vector, unsigned int N);
3 years ago
int main() {
/* Число заявок */
unsigned int N;
scanf("%d", &N);
app* vector = (app*)calloc(N, sizeof(app));
/* Считываем информацию о заявках, начало-конец */
for (unsigned int i = 0; i < N; i++) {
scanf("%d %d", &vector[i].begin, &vector[i].end);
}
/* Сортируем заявки по времени окончания */
qsort(vector, N, sizeof(app), vector_compare);
int result = solve(vector, N);
printf("Количество выполненных заявок:%d\n", result);
3 years ago
free(vector);
}
int vector_compare(const void *a, const void *b) {
return ((const app *)a)->end - ((const app *)b)->end;
}
int solve(app *vector, unsigned int N) {
3 years ago
/* Сохраняем начальное значение N */
unsigned int result = N;
3 years ago
/* Конец очередной заявки */
int end = vector[0].end;
for (unsigned int i = 1; i < N; i++) {
3 years ago
if (end > vector[i].begin) {
/* Удаляем заявки, время начала которых раньше времени конца
Изменяем счетчик заявок */
(result)--;
3 years ago
}
else {
/* Иначе, обновляем значение очередного конца */
end = vector[i].end;
}
}
return result;
3 years ago
}