Pagini recente » Cod sursa (job #1865168) | Cod sursa (job #771386) | Cod sursa (job #1973665) | Cod sursa (job #2664103) | Cod sursa (job #1574981)
#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;
}