Cod sursa(job #2841776)

Utilizator ecaterinaEcaterina Stefanescu ecaterina Data 30 ianuarie 2022 14:28:53
Problema Trapez Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>

using namespace std;

#define NMAX 1001
#define SOLMAX 500001

int x[NMAX];
int y[NMAX];

struct fractie {
    int sus;
    int jos;
};

fractie panta[SOLMAX];

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


int main() {
    FILE *fin, *fout;
    fin = fopen("trapez.in", "r");
    fout = fopen("trapez.out", "w");

    int n, i, j, nr, nra, nrtot;

    fscanf(fin, "%d", &n);

    for (i=0; i<n; i++) {
        fscanf(fin, "%d%d", x[i], y[i]);
    }

    nr = 0;
    for (i=0; i<n-1; i++) {
        for (j=i+1; j<n; j++){
            panta[nr].sus = y[j]-y[i];
            panta[nr].jos = x[j]-x[i];
            nr++;
        }
    }

    sort(panta, panta+n*(n-1)/2, cmp);

    nrtot = 0;
    nra = 1;
    for (i=1; i<nr; i++) {
        if (panta[i].sus*panta[i-1].jos == panta[i].jos*panta[i-1].sus) {
            nra++;
        } else {
            nrtot += nra*(nra-1)/2;
            nra = 1;
        }
    }

    fprintf(fout, "%d", nrtot);

    fclose(fin);
    fclose(fout);
    return 0;
}