Cod sursa(job #2499233)

Utilizator AndreiStrAndrei Stroici AndreiStr Data 25 noiembrie 2019 18:20:33
Problema Algoritmul lui Gauss Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
const int N = 302;
int n,m,ec[N];
double A[N][N],*a[N],val;
int main()
{
    f>>n>>m;
    int i,j,k,p;
    for(i=0; i<=n; i++)
        a[i]=A[i];
    for(i=1; i<=n; i++)
        for(j=1; j<=m+1; j++)
            f>>a[i][j];
    j=1;
    for(i=1; i<=n; i++)
    {
        while(j<=m)
        {
            for(k=i; k<=n; k++)
                if(a[k][j]!=0)
                    break;
            if(k<=n)
                break;
            j++;
        }
        if(j==m+1)
            break;
        if(k>i)
            swap(a[i],a[k]);
        ec[j]=i;
        val=a[i][j];
        for(k=j; k<=m+1; k++)
            a[i][k]/=val;
        for(k=1; k<=n; k++)
        {
            if(k==i)
                continue;
            if(a[k][j]==0)
                continue;
            val=a[k][j];
            for(p=j; p<=m+1; p++)
                a[k][p]-=val*a[i][p];
        }
    }

//    for(; i<=n; i++)
//        if(a[i][m+1]!=0)
//        {
//            g<<"Imposibil";
//            return 0;
//        }
    for(int j=1; j<=m; j++)
        g<<fixed<<setprecision(10)<<a[ec[j]][m+1]<<' ';
    return 0;
}