HDU - 2037 этим летом без AC (жадный)

Лимит времени: 2000/1000 МС предел (Java / Другие) Память: 65536/32768 К (Java / другое)
Общее представление (ы): 90034 Принято Подача (ы): 48081

описание проблемы

«Этим летом без AC?»
«Да». «Что
ты делаешь?»
«Да смотреть чемпионат мира, глупо!»
«@ # $% ^ & *% ...»
Действительно, Кубок мира для поклонников фестиваля также он пришел, подсчитано , что многие ACMer отложат в сторону компьютера, к телевизору.
Поклонники, мы хотим увидеть , как большая часть полной игры, конечно же , как новая эра хороших молодых людей, вы также должны взглянуть на некоторые другие программы, такие как сеть новостей (Никогда не забывайте , что озабоченность по поводу национальных дел), 6 + 7, супер девочки, и Ван Xiaoya из «счастливого словаря» и так далее, если вы уже знаете , вы хотите , чтобы посмотреть расписание вещания всех телевизионных программ, вы это устроить? (Цель, чтобы увидеть , как большую часть полной программы)

вход

Входные данные, содержащий множество тестового примера, первая строка каждого тестового примера только одно целое число п (п <= 100), представляет собой общее количество программ, которые вам нравятся, то п строк, каждая строка, содержащая два данных Ti_s, Ti_e (1 <= я <= N), представляют собой I-го начала и окончания программы раз, для того, чтобы упростить проблему, каждый раз с положительным целым числом. п = 0 представляет собой входной конец без обработки.

Выход

Для каждого теста, количество выходов можно увидеть полную программу ТВ, выход каждого теста в отдельной строке.

Пример ввода

12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
0

Пример вывода

5

Решать

Сортировать время окончания программы затем траверс спереди назад, каждый раз, наблюдая программу будет изменен на текущее время конца для этой программы, если время начала следующей программы более равного текущее время, мы рассмотрим программу, либо перейти к следующей итерации.

Код
#include <bits/stdc++.h>
using namespace std;
pair<int, int> a[101];
bool cmp(pair<int, int> lef, pair<int, int> rhs)
{
    return lef.second < rhs.second;
}
int main()
{
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
    int n;
    while (cin >> n && n)
    {
        for (int i = 0; i < n; i++)
            cin >> a[i].first >> a[i].second;

        sort(a, a + n, cmp);
        int time = a[0].second;
        int cnt = 1;
        for (int i = 1; i < n; i++)
        {
            if (a[i].first >= time)
            {
                time = a[i].second;
                cnt++;
            }
        }
        cout << cnt << endl;
    }
}

рекомендация

отwww.cnblogs.com/YY666/p/11346758.html
рекомендация