Cod sursa(job #1444384)

Utilizator zikade9Irimia Rares zikade9 Data 29 mai 2015 17:47:46
Problema Algoritmul lui Gauss Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include<cstdio>

using namespace std;

int p[309], N, M;
double sol[309], A[309][309];
double eps = 1e-13;

double mod (double x)
{
    if (x < 0)
        return -x;
    return x;
}

int main ()
{
freopen ("gauss.in", "r", stdin);
freopen ("gauss.out", "w", stdout);

scanf ("%d %d", &N, &M);
for (int i=1; i<=M; i++)
    for (int j=1; j<=N+1; j++)
        scanf ("%lf", &A[i][j]);

for (int i=1; i<=M; i++)
{
    p[i] = 0;
    for (int j=1; j<=N+1; j++)
        if (mod (A[i][j]) > eps)
        {
            p[i] = j;
            break;
        }
    if (p[i] == N + 1)
    {
        printf ("Imposibil\n");
        return 0;
    }
    if (p[i] == 0)
        continue;
    for (int j=1; j<=M; j++)
        if (j != i && mod (A[j][p[i]]) > eps)
        {
            double rap = (double)A[j][p[i]] / A[i][p[i]];
            for (int k=1; k<=N + 1; k++)
                A[j][k] = (double) A[j][k] - A[i][k] * rap;
        }
}

for (int i=1; i<=M; i++)
    if (p[i])
        sol[p[i]] = (double)A[i][N+1] / A[i][p[i]];

for (int i=1; i<=N; i++)
    printf ("%.10lf ", sol[i]);
printf ("\n");

return 0;
}