围观下
程序代码:
#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; }