Pagini recente » Istoria paginii utilizator/luciand | Diferente pentru utilizator/ionanghelina intre reviziile 43 si 41 | Istoria paginii utilizator/mateisirghe | Diferente pentru solutie/nrchei intre reviziile 16 si 6 | Cod sursa (job #2863485)
#include <fstream>
#include <cstring>
#define N 100015
using namespace std;
ifstream fin("heavymetal.in");
ofstream fout("heavymetal.out");
int n, m;
struct
{
int s, f, val;
}ora[N], aux;
void Sortare()
{
int i;
bool ok =1;
while(ok == 1)
{
ok = 0;
for(i = 1; i < n; ++ i)
if(ora[i].f > ora[i + 1].f ||
(ora[i].f == ora[i+1].f && ora[i].s < ora[i+1].s))
{
ok = 1;
aux = ora[i];
ora[i] = ora[i+1];
ora[i+1]=aux;
}
}
}
int main()
{
int i, ct;
fin >> n;
for(i = 1; i <= n; ++ i)
fin >> ora[i].s >> ora[i].f;
Sortare();
int Max = 0;
for(i = 1; i <= n; ++ i)
{
ct = i - 1;
while(ct >= 1 && ora[ct].f > ora[i].s) ct --;
ora[i].val = ora[ct].val + ora[i].f - ora[i].s;
}
for(i = 1; i <= n; ++ i)
if(ora[i].val > Max) Max =ora[i].val;
fout << Max;
return 0;
}