Pagini recente » Cod sursa (job #1223222) | Cod sursa (job #2567647) | Cod sursa (job #2887270) | Cod sursa (job #1311627) | Cod sursa (job #1784023)
#include <bits/stdc++.h>
using namespace std;
typedef long double f80;
const f80 EPS = 1e-8;
const int SPQR = 305; // Ave Imperator, morituri te salutant!
inline bool eq(const f80 &a, const f80 &b) {
return abs(a-b) < EPS;
}
f80 mx[SPQR][SPQR], ant[SPQR];
int pt[SPQR];
int main(void) {
ifstream fi("gauss.in");
ofstream fo("gauss.out");
int n, m;
f80 mul;
fi >> n >> m;
for(int i=1; i<=n; ++i)
for(int j=1; j<=m+1; ++j)
fi >> mx[i][j];
for(int i=1; i<=n; ++i) {
pt[i] = 0;
for(int j=1; j<=m+1 && !pt[i]; ++j)
if(!eq(mx[i][j], 0))
pt[i] = j;
if(pt[i]==0)
continue;
if(pt[i]==m+1) {
fo << "Imposibil\n";
return 0;
}
for(int k=1; k<=n; ++k) if(k!=i && !eq(mx[k][pt[i]], 0)) {
mul = mx[k][pt[i]] / mx[i][pt[i]];
for(int j=1; j<=m+1; ++j)
mx[k][j]-= mx[i][j] * mul;
}
}
for(int i=1; i<=n; ++i)
if(pt[i])
ant[pt[i]] = mx[i][m+1] / mx[i][pt[i]];
fo << setprecision(10) << fixed;
for(int i=1; i<=m; ++i)
fo << ant[i] << ' ';
fo << '\n';
return 0;
}