Cod sursa(job #324205)

Utilizator andreioneaAndrei Onea andreionea Data 14 iunie 2009 21:50:40
Problema Numarare triunghiuri Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.48 kb
#include<stdio.h>
#include<string.h>
#define W 30001
#define F(x,y,z) for(x=z;x<=y;++x)
#define init(x) memset(x,0,sizeof(x))
long long v[801],o[801],i,j,n,b[W],q[W],p;int main(){FILE *f=fopen("nrtri.in","r"),*g=fopen("nrtri.out","w");init(q);init(b);fscanf(f,"%lld",&n);p=0;F(i,n,1){fscanf(f,"%lld",&v[i]);++b[v[i]];}F(i,W,1){F(j,b[i],1)o[++p]=i;q[i]=p;}p=0;F(i,n-2,1)F(j,n-1,i+1)if(o[i]+o[j]<W)p+=q[o[i]+o[j]]-j;else p+=q[W-1]-j;if(!p) --p;fprintf(g,"%lld",p);fclose(f);fclose(g);return 0;}