Pagini recente » Cod sursa (job #1762916) | Cod sursa (job #2613852) | Cod sursa (job #2105475) | Cod sursa (job #402694) | Cod sursa (job #1784033)
#include <bits/stdc++.h>
using namespace std;
typedef 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) {
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
int n, m;
f80 mul;
scanf("%d%d", &n, &m);
for(int i=1; i<=n; ++i)
for(int j=1; j<=m+1; ++j)
scanf("%lf",&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) {
puts("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]];
for(int i=1; i<=m; ++i)
printf("%.10f ", ant[i]);
printf("\n");
return 0;
}