Cod sursa(job #1574981)

Utilizator tc_iuresiures tudor-cristian tc_iures Data 20 ianuarie 2016 23:22:00
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

const int Nmax = 100005;

int N, intMax;   // intMax = interval maxim
pair<int,int> Con[Nmax];
int best[Nmax];

void read()
{
    ifstream f("heavymetal.in");
    f >> N;
    for(int i = 1; i <= N; i ++)
    {
        f >> Con[i].first;
        f >> Con[i].second;
    }
    f.close();
}

bool compareByFinish(pair<int,int> x, pair<int,int> y)
{
    return(x.second < y.second);
}

void solve()
{
    sort(Con+1,Con+N+1,compareByFinish);
    for(int i = 1; i <= N; i ++)
    {
        cout << Con[i].first << " " << Con[i].second << "\n";
    }
    int ultFinish = -1;    // ultFinish = ultim finish
    for(int i = 1; i <= N; i ++)
    {
        int j;
        for(j = i-1;j > 1 && Con[j].second>Con[i].first; j --);
        best[i] = max(best[i], best[j] + Con[i].second-Con[i].first);
    }
}

void print()
{
    ofstream g("heavymetal.out");
    g << best[N];
    g.close();
}

int main()
{
    read();
    solve();
    print();
    return 0;
}