Pagini recente » Cod sursa (job #837671) | Cod sursa (job #2444289) | Cod sursa (job #1929131) | Cod sursa (job #1944625) | Cod sursa (job #2204082)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("orase.in");
ofstream g("orase.out");
int i,j,n,m,k,sum=0;
struct gogu
{
int x,y;
}a[50010];
bool comp(gogu d,gogu e)
{
if(d.x==e.x)
return d.y<e.y;
else
return d.x<e.x;
}
int main()
{
f>>m>>n;
for(i=1;i<=n;i++)
{
f>>a[i].x>>a[i].y;
}
sort(a+1,a+n+1,comp);
gogu t1,t2;
sum=a[1].y+a[2].y+(a[2].x-a[1].x);
t1=a[1];
t2=a[2];
for(i=3;i<=n;i++)
{
if(a[i].x==t2.x)
{
if(sum<(sum-t2.y+a[i].y))
{
sum=sum-t2.y+a[i].y;
t2=a[i];
}
}
else
if(a[i].x==t1.x)
{
if(sum<(sum-t1.y+a[i].y))
{
sum=sum-t1.y+a[i].y;
t1=a[i];
}
}
else
{
int temp1,temp2;
temp1=sum-(max(t1.x,t2.x)-min(t1.x,t2.x)+t1.y)+(a[i].x-t2.x+a[i].y);
temp2=sum-(max(t1.x,t2.x)-min(t1.x,t2.x)+t2.y)+(a[i].x-t1.x+a[i].y);
if(temp1>temp2 && temp1>sum)
{
t1=a[i];
sum=temp1;
}
else
if(temp2>temp1 && temp2>sum)
{
t2=a[i];
sum=temp2;
}
}
}
g<<sum;
}