Pagini recente » Cod sursa (job #2183260) | Cod sursa (job #1482175) | Cod sursa (job #3294166) | Cod sursa (job #1424334) | Cod sursa (job #2691041)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("gauss.in");
ofstream fout ("gauss.out");
const double epss = 1e-10;
int m, n;
double v [303][303], ans [303];
int main (){
fin >> n >> m;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m + 1; j ++)
fin >> v [i][j];
for (int i = 1, j = 1; i <= n && j <= m; i ++, j ++){
for (int k = i; k <= n; k ++){
if (v [k][j] < -epss || v [k][j] > epss){
for (int u = 1; u <= m + 1; u ++)
swap(v[k][u], v[i][u]);
}
}
if (v [i][j] >= -epss && v[i][j] <= epss){
i --; continue;
}
for (int u = j + 1; u <= m + 1; u ++)
v [i][u] /= v [i][j];
v [i][j] = 1;
for (int k = i + 1; k <= n; k ++){
for (int u = j + 1; u <= m + 1; u ++)
v [k][u] -= v [k][j] * v [i][u];
v [k][j] = 0;
}
}
for (int i = n; i >= 0; i --){
for (int j = 1; j <= m + 1; j ++){
if (v [i][j] >= -epss && v [i][j] <= epss)
continue;
if (j == m + 1) {
fout << "Imposibil";
return 0;
}
ans [j] = v [i][m + 1];
for (int k = j + 1; k <= m; k ++)
ans [j] -= v [i][k] * ans [k];
break;
}
}
for (int i = 1; i <= m; i ++)
fout << setprecision(10) << fixed << ans[i] << " ";
return 0;
}