-
Notifications
You must be signed in to change notification settings - Fork 59
/
Copy pathconcert.cpp
43 lines (40 loc) · 1.07 KB
/
concert.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h>
typedef struct { long a,b,c,p1,p2; } interval;
long n,c[1000],rez;
interval e[1000],tmp;
int main()
{
long i,j,t;
freopen("concert.in","r",stdin);
freopen("concert.out","w",stdout);
scanf("%ld",&n);
for(i=0;i<n;i++)
scanf("%ld%ld%ld%ld%ld",&e[i].a,&e[i].b,&e[i].c,&e[i].p1,&e[i].p2);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(e[i].b>e[j].b || (e[i].b==e[j].b && e[i].a>e[j].a))
{
tmp=e[i];e[i]=e[j];e[j]=tmp;
}
for(i=0;i<n;i++)
{
c[i]=(e[i].b-e[i].a)*e[i].c;
for(j=0;j<i;j++)
if(e[j].b<e[i].a)
{
t=c[j]+(e[i].b-e[i].a)*e[i].c;
if(c[i]<t)
c[i]=t;
}
else
{
t=c[j]-e[j].p2-(e[j].b-e[i].a)*e[j].c+(e[i].b-e[i].a)*e[i].c;
if(c[i]<t) c[i]=t;
t=c[j]-e[i].p1+(e[i].b-e[j].b)*e[i].c;
if(c[i]<t) c[i]=t;
}
if(rez<c[i]) rez=c[i];
}
printf("%ld\n",rez);
return 0;
}