Cod sursa(job #2046852)

Utilizator cicero23catalin viorel cicero23 Data 24 octombrie 2017 10:16:09
Problema Heavy metal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("heavymetal.in");
ofstream g("heavymetal.out");
struct ceva
{
    int x,y,d;
} v[100001];
int s[100001];
int comp(ceva A, ceva B)
{
    if(A.x==B.x) return A.y<B.y;
    else return A.x<B.x;
}
int Dmax;
int main()
{
    int n,i,dmax,j,smax=0;
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>v[i].x>>v[i].y;
        v[i].d=v[i].y-v[i].x;
    }
    sort(v+1,v+n+1,comp);
    for(i=1; i<=n; i++)
    {

        for(j=1; j<=smax; j++)
            if(s[j]>0&&s[j]<=v[i].x)
            {
                if(s[j+v[i].d]>v[i].y)
                {
                    s[j+v[i].d]=v[i].y;


                }
                if(s[j+v[i].d]==0)
                {
                    s[j+v[i].d]=v[i].y;
                    if(j+v[i].d>smax)smax =j+v[i].d;
                }

            }
        if(s[v[i].d]>v[i].y||s[v[i].d]==0)
        {
            s[v[i].d]=v[i].y;
            if(v[i].d>smax) smax=v[i].d;
        }

    }


    g<<smax;
    return 0;
}