Cod sursa(job #1952113)

Utilizator radu.leonardoThe Doctor radu.leonardo Data 3 aprilie 2017 22:43:35
Problema Algoritmul lui Gauss Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

const double eps = 1e-6;
const int Nmax = 303;

int n, m, i, j, k, p[Nmax];
long double coef, a[Nmax][Nmax], ans[Nmax];

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

    scanf("%d%d", &m, &n);

    for(i=1; i<=m; ++i)
        for(j=1; j<=n+1; ++j)
            scanf("%lf", &a[i][j]);

    for(i=1; i<=m; ++i)
    {
        for(j=1; j<=n+1; ++j)
            if(fabs(a[i][j]) > eps) break;

        if(j==n+2) continue;

        if(j==n+1)
        {
            printf("Imposibil\n");
            return 0;
        }

        p[i] = j;

        for(j=1; j<=m; ++j)
            if(i!=j)
            {
                coef = (1.0L*a[j][p[i]]) / (1.0L*a[i][p[i]]);
                for(k=1; k<=n+1; ++k)
                    a[j][k] -= 1.0L* coef * a[i][k];
            }
    }

    for(i=1; i<=m; ++i) if(p[i]) ans[p[i]] = a[i][n+1] / a[i][p[i]];

    for(i=1; i<=n; ++i) printf("%.10lf ", ans[i]);
}