Pagini recente » Cod sursa (job #91465) | Cod sursa (job #3173927) | Cod sursa (job #2747136) | Cod sursa (job #2080837) | Cod sursa (job #70536)
Cod sursa(job #70536)
#include <fstream>
using namespace std;
long m , n;
struct oras {
long d, l;
};
oras o[50000];
void citire() {
ifstream fin ("orase.in");
fin >> m >> n ;
for (int i = 0; i < n ; i++)
fin >> o[i].d >> o[i].l;
fin.close();
}
void qsort(long st, long dr) {
long i = st, j = dr;
oras aux = o[i];
do {
while (i < j && o[j].d >= aux.d)
j--;
o[i] = o[j];
while (i < j && aux.d >= o[i].d)
i++;
o[j] = o[i];
} while (i != j);
o[i] = aux;
if (st < i - 1)
qsort(st, i - 1);
if (i + 1 < dr)
qsort(i + 1, dr);
o[j] = o[i];
}
long max() {
long ma = 0, k = 0;
for (long i = n - 1 ; i >0 ; i --) {
long d = d = o[i].d + o[i].l;
for (long j = k; j < i ; j ++) {
long d1 = - o[j].d + o[j].l + d;
if (ma < d1){
ma = d1;
k = j;
}
}
}
return ma;
}
void scrie () {
ofstream fout("orase.out");
fout << max();
fout.close();
}
int main() {
citire();
qsort(0, n-1);
scrie();
return 0;
}