Cod sursa(job #2940289)

Utilizator Luka77Anastase Luca George Luka77 Data 15 noiembrie 2022 11:02:51
Problema Numarare triunghiuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("nrtri.in");
ofstream fout("nrtri.out");

const int NMAX = 805;
int n, arr[NMAX], cnt;

inline void solve()
{
    sort(arr + 1, arr + n + 1);
    for(int i = 1; i < n; ++ i)
    {
        for(int j = i + 1; j <= n; ++ j)
        {
            int st = j + 1, dr = n, l1 = arr[i], l2 = arr[j], poz = 0;
            while(st <= dr)
            {
                int mid = (st + dr) / 2;
                if(arr[mid] > l1 + l2)
                {
                    //cout << mid;
                    dr = mid - 1;
                }
                else
                {
                    poz = mid;
                    st = mid + 1;
                }
            }
            if(poz)
            {
                cnt += poz - j;
            }
        }
    }
    fout << cnt;
}

int main()
{
    fin >> n;
    for(int i = 1; i <= n; ++ i)
        fin >> arr[i];
    solve();
}