Pagini recente » Cod sursa (job #484617) | Cod sursa (job #2155379) | Cod sursa (job #2453064) | Cod sursa (job #1680198) | Cod sursa (job #1336357)
#include <stdio.h>
#define MAXN 6000
int a[MAXN], b[MAXN], c[MAXN], n;
long long d[MAXN];
inline int tata(int p){
return (p-1)/2;
}
inline int fiust(int p){
return 2*p+1;
}
inline int fiudr(int p){
return 2*p+2;
}
inline void swap(int x, int y){
int aux=a[x];
a[x]=a[y];
a[y]=aux;
aux=b[x];
b[x]=b[y];
b[y]=aux;
aux=c[x];
c[x]=c[y];
c[y]=aux;
}
inline void coborare(int p){
int f=1, q;
while((f==1)&&(fiust(p)<n)){
q=fiust(p);
if((fiudr(p)<n)&&(a[fiudr(p)]>a[q])){
q=fiudr(p);
}
if(a[q]>a[p]){
swap(p, q);
p=q;
}else{
f=0;
}
}
}
inline void heapify(){
int i;
for(i=tata(n-1); i>=0; i--){
coborare(i);
}
}
inline void heapSort(){
int cn=n;
while(n>1){
n--;
swap(0, n);
coborare(0);
}
n=cn;
}
int main(){
int gogu, i, x, y, z, k, j, aux, p, q, r;
long long ans, max;
FILE *fin, *fout;
fin=fopen("cutii.in", "r");
fout=fopen("cutii.out", "w");
fscanf(fin, "%d", &gogu);
n=0;
for(i=0; i<gogu; i++){
fscanf(fin, "%d%d%d", &p, &q, &r);
if((r>=p)&&(r>=q)){
z=r;
if(p<=q){
x=p;
y=q;
}else{
x=q;
y=p;
}
}else if(r>=p){
z=q;
x=p;
y=r;
}else if(r>=q){
z=p;
x=q;
y=r;
}else if(p>=q){
z=p;
x=r;
y=q;
}else{
z=q;
x=r;
y=p;
}
a[n]=x; b[n]=y; c[n]=z; n++;
a[n]=x; b[n]=z; c[n]=y; n++;
a[n]=y; b[n]=z; c[n]=x; n++;
}
heapify();
heapSort();
k=0;
ans=0;
for(i=0; i<n; i++){
if(a[i]!=a[k]){
k=i;
}
max=0;
for(j=0; j<k; j++){
if((b[i]>b[j])&&(max<d[j])){
max=d[j];
}
}
d[i]=c[i]+max;
if(ans<d[i]){
ans=d[i];
}
}
fprintf(fout, "%lld\n", ans);
fclose(fin);
fclose(fout);
return 0;
}