Pagini recente » Cod sursa (job #2642814) | Cod sursa (job #1042485) | Cod sursa (job #580752) | Istoria paginii runda/tsa_ojisim2014/clasament | Cod sursa (job #1244639)
#include<cstdio>
#include<cmath>
#define eps 0.0000001
double a[310][310],sp[310];
int po[310];
int main()
{
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
int n,m,i,j,k,y,x;
bool te=1;
double amp;
scanf("%d%d",&n,&m);
m++;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
scanf("%lf",&a[i][j]);
po[i]=i;
}
for(i=1;i<m;i++)
{
for(j=i+1;j<=n;j++)
if(fabs(a[po[j]][i])>=eps)
{
y=po[i];
po[i]=po[j];
po[j]=y;
break;
}
if(fabs(a[po[i]][i])>=eps)
{
for(j=i+1;j<=n;j++)
if(fabs(a[po[j]][i])>=eps)
{
amp=a[po[j]][i]/a[po[i]][i];
for(x=1;x<=m;x++)
a[po[j]][x]=a[po[j]][x]-a[po[i]][x]*amp;
}
}
}
for(i = n; i>0; --i)
for(j = 1; j <= m; ++j)
if(a[po[i]][j]>eps || a[po[i]][j]<-eps)
{
if(j == m)
{
printf("Imposibil\n");
return 0;
}
sp[j] = a[po[i]][m];
for(k = j+1; k < m; ++k)
sp[j] -= sp[k] * a[po[i]][k];
sp[j]=sp[j]/a[po[i]][j];
break;
}
for(i=1;i<m;i++)
printf("%lf ",sp[i]);
return 0;
}