Pagini recente » Cod sursa (job #866918) | Cod sursa (job #1986420) | Cod sursa (job #922183) | Cod sursa (job #866935) | Cod sursa (job #3267930)
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
#include<bits/stdc++.h>
#define mod 1000000007
using namespace std;
double eps = 1e-8;
const int dim = 2e5 + 55;
int n, m, poz[305];
double mat[305][305], coef, ans[305];
double nul(double value)
{
return -eps < value && value < eps;
}
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
fin >> n >> m;
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= m + 1; ++j)
{
fin >> mat[i][j];
}
}
for(int i = 1; i <= n; ++i)
{
poz[i] = -1;
}
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= m + 1; ++j)
{
if(!nul(mat[i][j]))
{
poz[i] = j;
break;
}
}
if(poz[i] == -1)
continue;
if(poz[i] == m + 1)
{
fout << "Imposibil";
return 0;
}
for(int j = 1; j <= n; ++j)
{
if(i == j) continue;
coef = (double)mat[j][poz[i]] / mat[i][poz[i]];
for(int k = 1; k <= m + 1; ++k)
{
mat[j][k] -= (double)coef * mat[i][k];
}
}
}
for(int i = 1; i <= n; ++i)
{
if(poz[i] != -1)
{
ans[poz[i]] = (double)mat[i][m + 1] / mat[i][poz[i]];
}
}
for(int i = 1; i <= n; ++i)
{
fout << fixed << setprecision(12) << (double)ans[i] << " ";
}
}