Cod sursa(job #3319059)

Utilizator Sorin_GabrielGabara Sorin Gabriel Sorin_Gabriel Data 30 octombrie 2025 13:33:55
Problema Algoritmul lui Gauss Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.94 kb
#include <bits/stdc++.h>
#include <numeric>
#define VMAX 305
#define INF 1e10+1
#define int long long int
#define Mr_Gay return
#define baieti_sexy ios_base::sync_with_stdio(0)
#define nuduri_tipi_hot signed main()
#define sunt_horny_pentru_baieti {
#define pentru_baieti_horny_sunt }
using namespace std;
ifstream fin ("gauss.in");
ofstream fout ("gauss.out");

int de_aflat;
double numere[VMAX][VMAX];
double solutii[VMAX];
double factor;
const double LIM = 0.0000000000001;

nuduri_tipi_hot
{

    baieti_sexy;
    int n,m,i,j,k,t,q,nr;
    fin>>n>>m;
    for(i=0;i<n;i++)
    {
        for(j=0;j<=m;j++)
            fin>>numere[i][j];
    }

    for(i=0;i<n;i++)
    {
        //cautam linie pe care i nu e nul
        for(j=i;j<n;j++)
            if(abs(numere[j][i])>LIM) // e egal cu 0
                break;

        if(j==n)
            continue;

        for(k=0;k<=m;k++) // schimbam liniile
            swap(numere[i][k],numere[j][k]);

        for(j=i+1;j<n;j++)
        {
            factor = numere[j][i]/numere[i][i];
            numere[j][i]=0;
            for(k=i+1;k<=m;k++)
                numere[j][k]-=factor*numere[i][k];
        }
    }


    de_aflat = n-1;
    for(i=n-1;i>=0;i--)
    {
        for(k=0;k<m;k++)
            if(abs(numere[i][k])>LIM) // daca nu e 0, garantat restul term sunt liberi
                break;

        if(k==m) // niciun termen
        {
            if(abs(numere[i][m])>LIM) // nu e 0
            {
                fout<<"Imposibil\n";
                exit(0);
            }
        }
        else
        {
            solutii[k]=numere[i][m];
            for(j=k+1;j<m;j++)
            {
                solutii[k]-=numere[i][j]*solutii[j];
            }
            solutii[k]/=numere[i][k];
        }
    }

    for(i=0;i<m;i++)
    {
        fout<<setprecision(9)<<fixed<<solutii[i]<<' ';
    }
    fout<<'\n';



    Mr_Gay 0;
}