Pagini recente » Cod sursa (job #1767775) | Cod sursa (job #1466648) | Cod sursa (job #2347804) | Cod sursa (job #2198960) | Cod sursa (job #70534)
Cod sursa(job #70534)
#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 --) {
for (long j = k; j < i ; j ++) {
long d = o[i].d + o[i].l - o[j].d + o[j].l;
if (ma < d){
ma = d;
k = j;
}
}
}
return ma;
}
void scrie () {
ofstream fout("orase.out");
fout << max();
fout.close();
}
int main() {
citire();
qsort(0, n-1);
scrie();
return 0;
}