Pagini recente » Cod sursa (job #1481453) | Cod sursa (job #2675849) | zbang1 | Cod sursa (job #2222054) | Cod sursa (job #532628)
Cod sursa(job #532628)
#include <fstream.h>
#include <algorithm>
#define M 1000001
#define N 50001
using namespace std;
ifstream fin("orase.in");
ofstream fout("orase.out");
int n,m,best = -int(2e9), maxj = 0; // ds[N] distante strazi , dso[N] distanta strazi orase
struct distance{
int ds;
int dso;
} d[N];
int cmp(const distance &x,const distance &y){
return (x.ds < y.ds);
}
void read(){
int i;
fin>>m>>n;
for (i=1;i<=n;i++)
fin>>d[i].ds>>d[i].dso;
}
void solve(){
int i;
maxj = d[1].dso-d[i].ds;
for (i=2; i<=n; i++){
if ( d[i].ds + d[i].dso + maxj > best)
best = d[i].ds + d[i].dso + maxj;
if ( d[1].dso-d[i].ds > maxj )
maxj = d[1].dso-d[i].ds;
}
}
void qsort(int s, int d){
int i=s,j=d,pi=0,pj=1,aux;
if (s<d){
while(i<j){
if (ds[i] > ds[j]){
aux = ds[i];
ds[i] = ds[j];
ds[j] = aux;
aux = dso[i];
dso[i] = dso[j];
dso[j] = aux;
aux = pi;
pi = pj;
pj = aux;
}
i += pi; j -= pj;
}
qsort(s,i-1);
qsort(m+1,d);
}
}
int main(){
read();
//qsort(1,n);
sort(d+1,d+n+1,cmp);
solve();
//for (int i=1;i<=n;i++)
// fout<<ds[i]<<","<<dso[i]<<" ";
fout<<best;
return 0;
}