Pagini recente » Cod sursa (job #58679) | Cod sursa (job #564759) | Cod sursa (job #1621437) | Cod sursa (job #332465) | Cod sursa (job #2363626)
#include <cstdio>
using namespace std;
FILE* FIN=freopen("tablou.in","r",stdin);
FILE* FOUT=freopen("tablou.out","w",stdout);
int a[3072][3072],n,m,v[101024],q;
int sol[56],ln;
struct pct
{
int c,l;
};
void scan(int &x)
{
char y;
scanf("%c",&y);
x=y-'0';
}
void cit()
{
int i,j,x;
scanf("%d%d",&n,&m);
scanf("\n");
scan(a[1][1]);
for(j=2;j<=m;j++)
{
scan(x);
a[1][j]=a[1][j-1]+x;
}
scanf("\n");
for(i=2;i<=n;i++)
{
scan(x);
a[i][1]=a[i-1][1]+x;
for(j=2;j<=m;j++)
{
scan(x);
a[i][j]=a[i][j-1]+a[i-1][j]-a[i-1][j-1]+x;
}
scanf("\n");
}
}
void form(int k)
{
pct p[2];
int co;
for(co=0;co<2;co++)
scanf("%d%d",&p[co].l,&p[co].c);
scanf("%d",&co);
p[0].l--;
p[0].c--;
v[k]=co*(p[1].l-p[0].l)*(p[1].c-p[0].c);
v[k]+=a[n][m]-a[p[1].l][p[1].c]-a[p[0].l][p[0].c]+a[p[1].l][p[0].c]+a[p[0].l][p[1].c];
}
void mmset()
{
int i;
for(i=0;i<56;i++)
sol[i]=0;
}
void add(int x)
{
int i;
sol[0]+=x;
for(i=0;sol[i]/10;i++)
{
sol[i+1]+=sol[i]/10;
sol[i]%=10;
}
if(i>ln)
ln=i;
}
void crkt()
{
int i;
for(i=0;i<ln-1;i++)
if(sol[i]<0)
{
sol[i]+=10;
sol[i+1]--;
}
if(sol[i]/10)
{
sol[i+1]=sol[i]/10;
sol[i]%=10;
ln++;
}
for(;!sol[ln-1];ln--);
}
void af()
{
int i;
for(i=ln-1;i>=0;i--)
printf("%d",sol[i]);
printf("\n");
}
void difprint(int k)
{
int i;
mmset();
for(i=0;i<q;i++)
add(n*m*(v[k]-v[i]));
crkt();
af();
}
int main()
{
int i;
cit();
scanf("%d",&q);
for(i=0;i<q;i++)
form(i);
for(i=0;i<q;i++)
difprint(i);
return 0;
}