Cod sursa(job #2204082)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 14 mai 2018 15:11:05
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#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;
}