Cod sursa(job #967646)

Utilizator sorin2kSorin Nutu sorin2k Data 28 iunie 2013 10:52:02
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;

struct Oras {
	int d, l;
};

int compar(const void *a, const void *b)
{
	Oras oa = *(Oras*)a;
	Oras ob = *(Oras*)b;
	return oa.d - ob.d;
}

int main()
{
	int n, m, i, max, dist;
	Oras o[50000];
	ifstream fin("orase.in");
	ofstream fout("orase.out");
	fin >> m >> n;
	for(i = 0; i < n; i++)
	{
		fin >> o[i].d >> o[i].l;
	}
	qsort(o, n, sizeof(Oras), compar);
	max = o[0].l - o[0].d; // distanta de la oras pana la punctul de pe dreapta - dist pe dreapta pana la origine
	dist = 0; // distanta maxima intre 2 orase gasite
	for(i = 1; i < n; i++)
	{
		if(dist < max + o[i].d + o[i].l)
		{
			dist = max + o[i].d + o[i].l;
		}
		if(o[i].l > o[i].d + max)
		{
			max = o[i].l - o[i].d;
		}
	}
	fout << dist << endl;
	return 0;
}