Cod sursa(job #1222026)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 21 august 2014 23:26:49
Problema Algoritmul lui Gauss Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 100010
#define EPS 1e-10

int N, M;
long double A[305][305], Sol[305], X, Y, Ok;

void Solve(int K, int P) {
	while (P <= M && abs(A[K][P]) < EPS) P++;
	if (P > M) {
		Ok = 1;
		return;
	}
	X = A[K][P];
	for (int j = P; j <= M+1; j++) A[K][j] *= -1/X;
	for (int i = P+1; i <= N; i++) {
		Y = A[i][K];
		for (int j = P; j <= M+1; j++) {
			A[i][j] = A[i][j] * 1/Y + A[K][j];
		}
	}
	Solve(K+1,P+1);
	Sol[P] = A[K][M+1];
	for (int j = P+1; j <= M; j++) {
		Sol[P] -= A[K][j] * Sol[j];
	}
	Sol[P] /= A[K][P];
}

int main() {
	
	freopen("gauss.in","r",stdin);
	freopen("gauss.out","w",stdout);
	
	cin >> N >> M;
	
	for (int i = 1; i <= N; i++)
	for (int j = 1; j <= M+1; j++) {
		cin >> A[i][j];
	}
	
	Solve(1,1);
	
	if (Ok) {
		cout << setprecision(10) << fixed;
		for (int k = 1; k <= M; k++) cout << Sol[k] << " ";
	} else {
		cout << "Imposibil";
	}
		
	return 0;
}