Cod sursa(job #2841775)

Utilizator Ana_22Ana Petcu Ana_22 Data 30 ianuarie 2022 14:28:43
Problema Trapez Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#define NMAX 1000

using namespace std;
int x[NMAX], y[NMAX];
struct str {
    int sus;
    int jos;
};
str panta[NMAX*NMAX];

bool cmp( str i, str j ) {
    return i.sus * j.jos > i.jos * j.sus;
}

int main() {
    FILE *fin, *fout;
    int n, i, j, l, nr, cnt;
    fin = fopen( "trapez.in", "r" );
    fout = fopen( "trapez.out", "w" );
    fscanf( fin, "%d", &n );
    for( i = 0; i < n; i++ )
        fscanf( fin, "%d%d", &x[i], &y[i] );
    cnt = 0;
    for( i = 0; i < n; i++ ) {
        for( j = i + 1; j < n; j++ ) {
            panta[cnt].sus = y[j] - y[i];
            panta[cnt].jos = x[j] - x[i];
            cnt++;
        }
    }
    sort( panta, panta + n * ( n - 1 ) / 2, cmp );
    nr = 0;
    l = 1;
    for( i = 1; i < n * ( n - 1 ) / 2; i++ ) {
        if( panta[i].sus * panta[i-1].jos == panta[i].jos * panta[i-1].sus )
            l++;
        else {
            nr += ( l - 1 ) * l / 2;
            l = 1;
        }
    }
    fprintf( fout, "%d", nr );
    fclose( fin );
    fclose( fout );
    return 0;
}