Pagini recente » Cod sursa (job #2072458) | Cod sursa (job #2903044) | Cod sursa (job #467743) | Monitorul de evaluare | Cod sursa (job #806918)
Cod sursa(job #806918)
#include <cstdio>
#include <iostream>
#include <utility>
#include <iomanip>
using namespace std;
#define max_n 305
#define prec 1000000
struct Linie {
double val[max_n];
} L[max_n];
int n,m,i,j,l;
double p;
/*void show (){
int i,j;
for ( i=1; i<=n; i++ ){
for ( j=0; j<=m; j++ ){
printf("%f ",L[i].val[j]);
}
printf("\n");
}
printf("\n\n");
}*/
int main(){
freopen ("gauss.in","r",stdin);
freopen ("gauss.out","w",stdout);
// scanf ("%d %d", &n, &m );
cin>>n>>m;
for ( i=1; i<=n; i++ ){
for ( j=1; j<=m; j++ ){
cin>>L[i].val[j];
L[i].val[j]*=prec;
}
cin>>L[i].val[0];
L[i].val[0]*=prec;
}
if ( m > n ){
printf("Imposibil");
return 0;
}
for ( i=1; i<=m; i++ ){
j=i;
while ( ( L[j].val[i] == 0 ) && ( j<=n ) ) {
j++;
}
if ( j > n ){
printf("Imposibil");
return 0;
}
if ( i!=j ){
swap ( L[i], L[j] );
}
for ( j=1; j<=n; j++ ){
if ( ( i!=j ) && ( L[j].val[i] ) ) {
// scadem
p=L[j].val[i] / L[i].val[i];
for ( l=0; l<=m; l++ ){
L[j].val[l] -= L[i].val[l]*p;
}
}
}
}
for ( i=1; i<=m; i++ ){
printf("%.11lf ",L[i].val[0]/L[i].val[i]);
}
return 0;
}