Cod sursa(job #2656102)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 6 octombrie 2020 19:34:41
Problema Oz Scor 40
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#define NMAX 10000
#define MAX 2000000000
int v[NMAX];
int cmmmdc( int a, int b ) {
    int r;
    while ( b > 0 ) {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}
int main() {
    FILE *fin, *fout;
    int n, m, d, i, j, l;
    long long x, y;
    fin = fopen( "oz.in", "r" );
    fscanf( fin, "%d%d", &n, &m );
    for ( i = 0; i < n; i++ )
        v[i] = 1;
    l = 0;
    while ( l < m && x <= MAX && y <= MAX ) {
        fscanf( fin, "%d%d%d", &i, &j, &d );
        i--;
        j--;
        x = (long long)(v[i] * d / cmmmdc(v[i], d));
        v[i] = x;
        y = (long long)(v[j] * d / cmmmdc(v[j], d));
        v[j] =  y;
        l++;
    }
    fclose( fin );
    fout = fopen( "oz.out", "w" );
    if ( x <= MAX && y <= MAX ) {
        for ( l = 0; l < n; l++ )
            fprintf( fout, "%d ", v[l] );
    } else
        fprintf( fout, "-1" );
    fclose( fout );
    return 0;
}