Pagini recente » Cod sursa (job #1486503) | Cod sursa (job #1590552) | Cod sursa (job #3157262) | Cod sursa (job #1347851) | Cod sursa (job #1845089)
#include <stdlib.h>
#include <fstream>
#include <map>
using namespace std;
#define MAX_ORASE 50000
int main()
{
int lngStradaPrinc,nrOrase,d=0,lungimeMaxima=0;
int i,li,di;
ifstream in ("orase.in");
ofstream out ("orase.out");
in >> lngStradaPrinc >> nrOrase;
if (nrOrase <= MAX_ORASE)
{
map<int,int> tabel;
pair< map<int,int>::iterator, bool > res;
for (i = 0; i < nrOrase; ++i)
{
in >> di >> li;
res = tabel.insert( pair<int,int>( di, li) );
if (!res.second) // exista deja
{
d = res.first->second;
if (d < li)
{
d += li;
if (lungimeMaxima < d) lungimeMaxima = d;
res.first->second = li;
}
}
}
int util, max_util;
map<int,int>::iterator it = tabel.begin();
if (it != tabel.end())
{
max_util = it->second - it->first;
++it;
}
for ( ; it != tabel.end(); ++it)
{
di = it->first;
li = it->second;
d = li + di + max_util;
if (lungimeMaxima < d) lungimeMaxima = d;
util = li - di;
if (max_util < util) max_util = util;
}
out<<lungimeMaxima;
}
else
{
out<<"Nr orase prea mare"; // error message
}
return 0;
}