围观下
程序代码:#include<stdio.h>
#include<stdlib.h>
int n,inf[30001][3];
void in()
{
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d%d",&inf[i][0],&inf[i][1],&inf[i][2]);
}
void exc(int i,int j,int k)
{
int t;
t=inf[i][k];
inf[i][k]=inf[j][k];
inf[j][k]=t;
}
void qusort(int hand,int end)
{
int i=hand,j=end;
if(i<j)
{while(i<j)
{while(i<j && inf[i][1]<inf[j][1])
j--;
if(i<j)
{exc(i,j,0);
exc(i,j,1);
exc(i,j,2);
i++;
}
while(i<j && inf[i][1]<inf[j][1])
i++;
if(i<j)
{exc(i,j,0);
exc(i,j,1);
exc(i,j,2);
j--;
}
}
qusort(hand,i-1);
qusort(i+1,end);
}
}
long int Max()
{
int i,k;
long int m[30001],max;
m[1]=inf[1][2];
max=m[1];
for(i=2;i<=n;i++)
{m[i]=inf[i][2];
for(k=1;k<i;k++)
{if(inf[i][0]>=inf[k][1])
{if(m[i]<m[k]+inf[i][2])
m[i]=m[k]+inf[i][2];
}
else break;
}
if(m[i]>max)
max=m[i];
}
return max;
}
void out(long int pr)
{
printf("%ld\n",pr);
}
int main()
{
long int max;
in();
qusort(1,n);
max=Max();
out(max);
system("pause");
return 0;
}









