Cod sursa(job #2363626)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 3 martie 2019 14:07:47
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.92 kb
#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;
}