Pagini recente » Cod sursa (job #2486140) | Cod sursa (job #1625995) | Cod sursa (job #2450007) | Cod sursa (job #206889) | Cod sursa (job #1773857)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <cstdlib>
#define BUF_SIZE 1<<17
char buf[BUF_SIZE];
int pos = BUF_SIZE;
FILE *fin, *fout;
inline char nextch(){
if(pos==BUF_SIZE) fread(buf, BUF_SIZE, 1, fin), pos=0;
return buf[pos++];
}
inline int read(){
int x=0;
char ch=nextch();
while(!isdigit(ch)) ch=nextch();
while(isdigit(ch)){
x=10*x+ch-'0';
ch=nextch();
}
return x;
}
#define MAX 50000
using namespace std;
struct object {
int d;
int l;
};
object v[MAX];
bool cmp(object A, object B) {
return A.d < B.d;
}
int main() {
fin = fopen("orase.in", "r");
fout = fopen("orase.out", "w");
int m, n;
int dmax = -1, distc, i1, i2;
m=read();
n=read();
int i, maxl, maxd, md = -1, ml =-1;
for(i = 0;i < n;i++) {
v[i].d=read();
// if(v[i].d>maxd)
// maxd = v[i].d, md = i;
v[i].l=read();
}
sort(v, v+n, cmp);
int u = 0, uc, lc;
for(i = 1; i <= n;i++) {
distc = v[i].l + v[u].l + v[i].d - v[u].d;
if(distc > dmax){ dmax = distc;
uc = u;
lc = i;
}
if(v[i].l > v[i].d - v[u].d + v[u].l)//compar drumul de la i la i +1 cu cel de la u la i + 1
u = i;
}
fprintf(fout, "%d", dmax);
fclose(fin);
fclose(fout);
return 0;
}