Pagini recente » Cod sursa (job #257333) | Cod sursa (job #838735) | Cod sursa (job #89390) | Cod sursa (job #2224132) | Cod sursa (job #206703)
Cod sursa(job #206703)
#include<stdio.h>
long int n,m,i,j,a[16][16],ca,vert,verl,numn,nump,vap[17],ci,ap[15],bp[15],cb,k,lim,tr,l,c,van[17],an[15],bn[15],ver1,suma[50];
main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%ld%ld",&n,&m);vert=1;
for (i=0; i<n;i++)
{
verl=1;
for (j=0; j<m; j++)
{ scanf("%ld",&a[i][j]);
if (a[i][j]<0) {vert=0; verl=0;}
}
if (verl==0)
{
numn=0; nump=0;
for (j=0; j<m; j++)
{
if (a[i][j]>0)
{nump++;vap[nump]=j;
if (nump==1)
{
ci=0; ca=a[i][j];
while (ca) {ci++; ap[ci]=ca%10; ca/=10;} ap[0]=ci;
}
else
{
cb=a[i][j];
ci=0;
while (cb)
{
ci++;
bp[ci]=cb%10;
cb/=10;
}
bp[0]=ci;
if (ap[0]>=bp[0]) lim=ap[0];
else {lim=bp[0];ap[0]=bp[0];}
tr=0;
for (l=1; l<=lim; l++)
{
c=ap[l]+bp[l]+tr;
ap[l]=c%10;
tr=c/10;
}
if (tr>=1)
{
ap[0]++;
ap[ap[0]]=tr;
}
for (l=1; l<=bp[0]; l++)
bp[l]=0;
bp[0]=0;
}
}
else
if (a[i][j]<0)
{ numn++;
a[i][j]=(-1)*a[i][j];van[numn]=j;
if (numn==1)
{ci=0;
ca=a[i][j];
while (ca)
{ci++; an[ci]=ca%10;ca/=10;}
an[0]=ci;
}
else
{
cb=a[i][j];
ci=0;
while (cb){ci++; bn[ci]=cb%10; cb/=10; }
bn[0]=ci;
if (an[0]>=bn[0]) lim=an[0];
else {lim=bn[0];an[0]=bn[0];}
tr=0;
for (l=1; l<=lim; l++)
{ c=an[l]+bn[l]+tr; an[l]=c%10; tr=c/10; }
if (tr>=1)
{an[0]++;
an[an[0]]=tr; }
for (l=1; l<=bn[0]; l++)bn[l]=0;bn[0]=0;
}
}
}
if (ap[0]==an[0])
{
ver1=0;
for (j=1; j<=an[0]; j++)
if (ap[j]<an[j]) {ver1=1; break;}
if (ver1==1)
for (j=1; j<=nump; j++) a[i][vap[j]]=(-1)*a[i][vap[j]];
else
for (j=1; j<=numn; j++) a[i][van[j]]=(-1)*a[i][van[j]];
}
else
if (ap[0]>an[0])
for (j=1; j<=numn; j++) a[i][van[j]]=(-1)*a[i][van[j]];
else
for (j=1; j<=nump; j++) a[i][vap[j]]=(-1)*a[i][vap[j]];
}
//for (j=ap[0]; j>=1; j--) printf("%ld",ap[j]);printf("\n");
for (j=1; j<=ap[0];j++) ap[j]=0; ap[0]=0;
//for (j=an[0]; j>=1; j--) printf("%ld",an[j]);printf("\n");
for (j=1; j<=an[0];j++) an[j]=0; an[0]=0;
}
if (vert==1)
{
for (i=0; i<n; i++)
{
ci=0;
ca=a[i][0];
while (ca)
{ci++; ap[ci]=ca%10;ca/=10;}
ap[0]=ci;
for (j=1; j<m; j++)
{cb=a[i][j];ci=0;
while (cb){ci++; bp[ci]=cb%10; cb/=10; }
bp[0]=ci;
if (ap[0]>=bp[0]) lim=ap[0];
else {lim=bp[0];ap[0]=bp[0];}
tr=0;
for (l=1; l<=lim; l++)
{c=ap[l]+bp[l]+tr; ap[l]=c%10; tr=c/10; }
if (tr>=1)
{ ap[0]++; ap[ap[0]]=tr; }
for (l=1; l<=bp[0]; l++)
bp[l]=0;
bp[0]=0;
}
}
for (i=ap[0]; i>=1; i--) printf("%ld",ap[i]);
}
else
{
for (i=0; i<m; i++)
{ verl=1; ci=i; numn=0; nump=0;
for (j=0; j<n;j++)
{
if (a[j][i]<0)
{numn++;a[j][i]=(-1)*a[j][i];van[numn]=i;
if (numn==1)
{ ci=0;
ca=a[j][i];
while (ca)
{ci++; an[ci]=ca%10;ca/=10;}
an[0]=ci;
}
else
{cb=a[j][i]; ci=0;
while (cb) { ci++; bn[ci]=cb%10; cb/=10; }
bn[0]=ci;
if (an[0]>=bn[0]) lim=an[0];
else {lim=bn[0];an[0]=bn[0];}
tr=0;
for (l=1; l<=lim; l++)
{ c=an[l]+bn[l]+tr; an[l]=c%10; tr=c/10;}
if (tr>=1)
{ an[0]++; an[an[0]]=tr; }
for (l=1; l<=bn[0]; l++)bn[l]=0;
bn[0]=0;
}
}
else
if (a[j][i]>0)
{nump++;vap[nump]=i;
if (nump==1)
{ ci=0;ca=a[j][i];while (ca){ci++; ap[ci]=ca%10;ca/=10;}
ap[0]=ci;}
else
{cb=a[j][i]; ci=0;
while (cb) { ci++; bp[ci]=cb%10; cb/=10; }
bp[0]=ci;
if (ap[0]>=bp[0]) lim=ap[0];
else {lim=bp[0];ap[0]=bp[0];}
tr=0;
for (l=1; l<=lim; l++)
{ c=ap[l]+bp[l]+tr;
ap[l]=c%10;
tr=c/10;}
if (tr>=1)
{ ap[0]++;ap[ap[0]]=tr;}
for (l=1; l<=bp[0]; l++)bp[l]=0;
bp[0]=0;
}
}
}
if (ap[0]==an[0])
{
ver1=0;
for (j=1; j<=an[0]; j++)
if (ap[j]<an[j]) {ver1=1; break;}
if (ver1==1)
{tr=0;
for (k=1; k<=an[0]; k++){ an[k]=an[k]-ap[k]-tr;ap[k]=an[k];
if (an[k]<0) { tr=1; an[k]=an[k]+10; ap[k]=an[k];}
else tr=0;}
while (an[an[0]]==0) an[0]--; ap[0]=an[0];
}
else
{tr=0;
for (k=1; k<=ap[0]; k++)
{ap[k]=ap[k]-an[k]-tr;
if (ap[k]<0) { tr=1; ap[k]=ap[k]+10; }
else tr=0;
}
while (ap[ap[0]]==0) ap[0]--;
}
}
else
if (ap[0]>an[0])
{tr=0;
for (k=1; k<=ap[0]; k++)
{ap[k]=ap[k]-an[k]-tr;
if (ap[k]<0) { tr=1; ap[k]=ap[k]+10; }
else tr=0;
}
while (ap[ap[0]]==0) ap[0]--;}
else
{tr=0;
for (k=1; k<=an[0]; k++){ an[k]=an[k]-ap[k]-tr;ap[k]=an[k];
if (an[k]<0) { tr=1; an[k]=an[k]+10;ap[k]=an[k]; }
else tr=0;}
while (an[an[0]]==0) an[0]--;
ap[0]=an[0];
}
//for (j=ap[0]; j>=1; j--) printf("%ld",ap[j]);printf("\n");
if (i>0)
{
if (suma[0]>=ap[0]) lim=suma[0];
else {lim=ap[0];suma[0]=ap[0];}
tr=0;
for (j=1; j<=lim; j++)
{
c=ap[j]+suma[j]+tr;
suma[j]=c%10;
tr=c/10;
}
if (tr>=1)
{
suma[0]++;
suma[suma[0]]=tr;
}
for (j=1; j<=ap[0]; j++)
ap[j]=0;
ap[0]=0;
}
else
{suma[0]=ap[0];
for(j=1; j<=ap[0]; j++)suma[j]=ap[j];}
for (j=1; j<=ap[0];j++) ap[j]=0; ap[0]=0;
} }
for (i=suma[0]; i>=1; i--) printf("%ld", suma[i]);
}