Pagini recente » Cod sursa (job #313006) | Cod sursa (job #2323030) | Cod sursa (job #2446020) | Cod sursa (job #307372) | Cod sursa (job #411591)
Cod sursa(job #411591)
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<vector>
#define pb push_back
#define mp make_pair
#define f first
#define s second
using namespace std;
vector <pair <int, int> > a,b;
int maxh,maxp,n,m,maxx,maxx2;
int main()
{
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
scanf("%d%d",&m,&n);
int i,x,y;
for (i=0;i<n;++i)
{
scanf("%d%d",&x,&y);
a.pb(mp(x,y));
}
sort(a.begin(),a.end());
for (i=0;i<n;++i)
{
int j=i+1;
while (a[j].f==a[i].f)
{ j++; }
if (j-1!=i && a[j-2].s+a[j-1].s>maxx)
maxx2=a[j-2].s+a[j-1].s;
i=j-1;
b.pb(mp(a[i].f,a[i].s));
}
maxx=b[0].s+b[1].s+b[1].f-b[0].f;
int maxp=b[0].s>=b[1].s?0:1;
int minp=1-maxp;
for (i=2;i<b.size();++i)
{
int r1=b[i].s+b[i].f-b[minp].f+b[minp].s,r2=b[i].s+b[i].f-b[maxp].f+b[maxp].s;
if (b[i].s+b[i].f-b[minp].f+b[minp].s>b[i].s+b[i].f-b[maxp].f+b[maxp].s && b[i].s+b[i].f-b[minp].f+b[minp].s>maxx)
{
maxx=b[i].s+b[i].f-b[minp].f+b[minp].s;
if (b[minp].s<b[i].s) { maxp=i; }
else { maxp=minp,minp=i; }
}
else if (b[i].s+b[i].f-b[minp].f+b[minp].s<b[i].s+b[i].f-b[maxp].f+b[maxp].s && b[i].s+b[i].f-b[maxp].f+b[maxp].s>maxx)
{
maxx=b[i].s+b[i].f-b[maxp].f+b[maxp].s;
if (b[minp].s<b[i].s) { maxp=i; }
else { maxp=minp,minp=i; }
}
}
printf("%d\n",max(maxx,maxx2));
return 0;
}