Cod sursa(job #461390)

Utilizator sapiensCernov Vladimir sapiens Data 6 iunie 2010 17:16:10
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda summer1 Marime 0.76 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream fin; ofstream fout;
int a[810],i,j,k,n; long N;

int srch (int x,int y,long z) {
    if (x==y) return x; else
       if (x<y) {
          int m=(x+y)/2;
          if (a[m]<=z) return srch (m+1,y,z); else return srch (x,m,z);
       }
}

int main () {
    fin.open ("nrtri.in"); fout.open ("nrtri.out");
    fin>>n;
    for (i=0; i<n; i++) fin>>a[i];
    sort (a,a+n);
    srch (2,19,3);
    for (i=0; i<n-2; i++)
        for (j=i+1; j<n-1; j++) {
            k=srch (j+1,n-1,a[i]+a[j]);
            if (a[i]+a[j]<a[k]) k--;
            N+=(k-j);
        }
    for (i=0; i<n; i++) fout<<a[i]<<" "; fout<<endl;
    fout<<N<<endl;
    fin.close (); fout.close ();
    return 0;
}