Cod sursa(job #895713)

Utilizator ultnonam3blabla ultnonam3 Data 27 februarie 2013 12:19:46
Problema Magazin Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <cstdio>


int main()
{


    int p,n,m,d;
 FILE* f=fopen("magazin.in","r");
 fscanf(f,"%d %d %d %d",&p,&n,&m,&d);
    int a[n+1][m+1];
     int b[n+1][6];
    for (int i=1;i<=n;i++)
    {
        b[i][1]=0;
        b[i][2]=m+2;
        b[i][3]=m+2;
    }
int x,y;
 for(int i=1;i<=p;i++)
 {
     fscanf(f,"%d %d",&x,&y);
     a[x][y]=1;
     b[x][1]++;
     if (b[x][2]>m+1-y)
     b[x][2]=m+1-y;
     if (b[x][3]>y)
     b[x][3]=y;
     if (b[x][1]>1)
     b[x][4]=m-(b[x][2]+b[x][3])+2;
 }
 fclose(f);
 f=fopen("magazin.out","w");
int s=0,db3=0;
for(int i=1;i<=n;i++)
{
    if(b[i][1]==1)
    {
        if(b[i][2]<b[i][3])
        {
            b[i][5]=1;
            s=s+2*b[i][2];
        }
        else
        {
            b[i][5]=2;
            s=s+2*b[i][3];
        }
    }
    if(b[i][1]>1)
    {
        if((b[i][2]<b[i][4])&&(b[i][3]<b[i][4]))
        {

            b[i][5]=3;
            s=s+m+1;
            db3++;
        }
    }
}
bool skoz=false,vani=false;
int j=0;
for(int i=1;i<=n;i++)
{
    s=s+d;

    if ((b[i][5]==3) &&(skoz==false)) skoz=true;
   else if ((b[i][5]==3) &&(skoz==true)) skoz=false;
    if ((b[i][5]==1)||(b[i][5]==2)) vani=true;
    if ((vani==true) && (skoz==false)) s=s+d+d;
    if (vani==true)
        j=1;
    else j=0;
    //fprintf(f,"%d",j);

}
s=s-2*d+3-db3*d;
fprintf(f,"%d",s);
fclose(f);
}