Pagini recente » Cod sursa (job #1969150) | Cod sursa (job #1077308) | Cod sursa (job #2301996) | Cod sursa (job #316002) | Cod sursa (job #69601)
Cod sursa(job #69601)
#include<stdio.h>
#include<stdlib.h>
FILE*f=fopen("orase.in","r");
FILE*g=fopen("orase.out","w");
long n,m,dmax=-100, max;
typedef struct
{
long d, l;
} Oras;
Oras v[50000];
void citire()
{
long i;
fscanf(f,"%ld %ld",&m,&n);
for(i=1;i<=n;++i)
{
fscanf(f,"%ld %ld",&v[i].d,&v[i].l);
}
}
int pozitie(int p,int u)
{ int st,dr;
Oras aux;
st=p;dr=u;aux=v[p];
while(st<dr)
{ while(st<dr && v[dr].d>=aux.d) dr--;
v[st]=v[dr];
while(st<dr && v[st].d<=aux.d) st++;
v[dr]=v[st];
}
v[st]=aux;
return st;
}
void qsort(int p,int u)
{ int m=pozitie(p,u);
if(p<m) qsort(p,m-1);
if(m<u) qsort(m+1,u);
}
void calcul()
{
int i, comp;
qsort(1,n);
comp=1;
long smax, s;
for (i=2; i<=n; i++)
if ( v[comp].l + (m - v[comp].d) < v[i].l + (m - v[i].d) )
comp = i;
i--;
smax=v[i].l+v[comp].l+abs(v[i].d-v[comp].d);
fprintf(g,"%ld",smax);
}
int main()
{
citire();
calcul();
fclose(f);
fclose(g);
return 0;
}