Nu aveti permisiuni pentru a descarca fisierul grader_test6.ok
Cod sursa(job #895740)
Utilizator | Data | 27 februarie 2013 12:24:57 | |
---|---|---|---|
Problema | Magazin | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.39 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-3*d;
fprintf(f,"%d",s);
fclose(f);
}