Pagini recente » Cod sursa (job #1796449) | Cod sursa (job #1112364) | Cod sursa (job #1444697) | Cod sursa (job #823915) | Cod sursa (job #677508)
Cod sursa(job #677508)
#include<stdio.h>
#include<cstring>
#define maxn 100005
#define maxval 70
FILE*f=fopen("puteri.in","r");
FILE*g=fopen("puteri.out","w");
int n,i,j,val;
int a[maxn][3],Nr[maxval][maxval][maxval],needed[3][3];
int x[4];
long long nrsol;
void back ( int niv ){
if ( niv == 4 ){
nrsol += Nr[x[1]][x[2]][x[3]];
return ;
}
for ( int i = 1 ; i <= needed[niv-1][0] ; ++i ){
x[niv] = needed[niv-1][i];
back(niv+1);
}
}
inline int max ( int a , int b ){
return a >= b ? a : b;
}
int main () {
fscanf(f,"%d",&n);
int val_max = 0;
for ( i = 1 ; i <= n ; ++i ){
fscanf(f,"%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
for ( j = 0 ; j < 3 ; ++j ){
val_max = max(val_max,a[i][j]);
}
}
for ( i = 1 ; i <= n ; ++i ){
for ( val = max(a[i][0],max(a[i][1],a[i][2])) ; val <= (val_max<<1) ; ++val ){
memset(needed,0,sizeof(needed));
for ( j = 0 ; j < 3 ; ++j ){
needed[j][0] = 1;
needed[j][1] = val - a[i][j];
if ( needed[j][1] && !a[i][j] )
++needed[j][0],needed[j][2] = 0;
}
back(1);
}
++Nr[a[i][0]][a[i][1]][a[i][2]];
}
fprintf(g,"%lld\n",nrsol);
fclose(f);
fclose(g);
return 0;
}