Mai intai trebuie sa te autentifici.
Cod sursa(job #2047982)
Utilizator | Data | 25 octombrie 2017 17:55:48 | |
---|---|---|---|
Problema | Heavy metal | Scor | 100 |
Compilator | cpp | Status | done |
Runda | hlo2017_cj_av_l4 | Marime | 1.13 kb |
#include<fstream>
#include<vector>
#include<queue>
#include<iostream>
#include<algorithm>
#define DN 100005
#include<bitset>
#define x first
#define y second
using namespace std;
ifstream fin("heavymetal.in");
ofstream fout("heavymetal.out");
long long a[DN],c[DN],f,g,n,nr,r[2*DN],v[DN];
pair<int,int>x[2*DN];
typedef pair<int,int> pii;
pii d[DN];
int cmp(pii A,pii B)
{
return A.x<B.x;
}
int main()
{
// cout<<(sizeof(x)+sizeof(a)+sizeof(c))/1000;
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>f>>g;
nr++;
a[i]=g-f;
x[nr].x=f;
x[nr].y=i;
nr++;
x[nr].x=g;
x[nr].y=i;
}
n=nr;
sort(x+1,x+n+1,cmp);
for(int i=1;i<=n;i++)
{
r[i]=r[i-1];
if(v[x[i].y])
r[i]=max(r[i],c[x[i].y]+a[x[i].y]);
if(x[i].x!=x[i+1].x)
for(int j=i;j>=1&&x[j].x==x[i].x;j--)
{
r[j]=r[i];
if(!v[x[j].y])
{
v[x[j].y]=1;
c[x[j].y]=r[j];
}
}
}
fout<<r[n];
}