Pagini recente » Cod sursa (job #2023241) | Istoria paginii runda/ghiocel | Cod sursa (job #1448064) | Cod sursa (job #496683) | Cod sursa (job #177519)
Cod sursa(job #177519)
#include<fstream.h>
#include<math.h>
ifstream f("orase.in");
ofstream g("orase.out");
int d[50001],l[50001],i,j,aux,min,imax=1,x,y;
int divide(int p,int q)
{
int st=p,dr=q,x=d[p],y=l[p];
while(st<dr)
{
while(st<dr && d[dr]>=x) dr--;
d[st]=d[dr];
l[st]=l[dr];
while(st<dr && d[st]<=x) st++;
d[dr]=d[st];
l[dr]=l[st];
}
d[st]=x;
l[st]=y;
return st;
}
void qsort(int p,int q)
{
int m=divide(p,q);
if(m-1>p) qsort(p,m-1);
if(m+1<q) qsort(m+1,q);
}
int main()
{
int n;
int m;
f>>m;
f>>n;
for(i=1;i<=n;i++)
{
f>>d[i];
f>>l[i];
}
qsort(1,n);
min=0;
imax=1;
for(i=1;i<=n;i++)
{
for(j=imax;j<i;j++)
if(l[i]+d[i]+l[j]-d[j]>min)
{
min=l[i]+l[j]+d[i]-d[j];
imax=j;
}
}
g<<min;
f.close();
g.close();
return 0;
}