Pagini recente » Cod sursa (job #2215031) | Cod sursa (job #1276558) | Cod sursa (job #1112899) | Cod sursa (job #2697898) | Cod sursa (job #145912)
Cod sursa(job #145912)
#include <stdio.h>
# define MAX 1010
struct stru
{
int minx,miny;
int maxx,maxy;
};
int a[MAX][MAX],n,x1[MAX*MAX],y1[MAX*MAX];
long nr=0;
stru l[MAX*MAX],c[MAX*MAX];
void citire()
{
int nb;
freopen ("puncte.in","r",stdin);
scanf ("%d",&nb);
int x,y;
for (int i=0;i<nb;i++)
{
scanf ("%d%d",&x,&y);
a[++x][++y]=1;
if (x>n)
n=x;
if (y>n)
n=y;
x1[nr]=x;
y1[nr]=y;
nr++;
/* if (l[x].maxx==0)
{
l[x].maxx=x;
l[x].maxy=y;
}
else
if (l[x].maxy<y)
l[x].maxy=y;
if (l[x].minx==0)
{
l[x].maxx=x;
l[x].maxy=y;
}
else
if (l[x].miny>y)
l[x].miny=y;
if (l[x].maxy==0)
{
l[x].maxx=x;
l[x].maxy=y;
}
else
if (l[x].maxx<x)
l[x].maxx=x;
if (l[x].miny==0)
{
l[x].maxy=y;
l[x].maxx=x;
}
else
if (l[x].minx>x)
l[x].minx=x;
*/
}
fclose(stdin);
}
void vasile()
{
int x,y,x2,y2;
for (int i=0;i<nr;i++)
{
x=x1[i];
y=y1[i];
x2=1;
y2=y;
while (a[x2][y2]==0 && x2<x)
x2++;
while (x2<x)
{
if(a[x2][y2]==0)
{
a[x2][y2]=1;
x1[nr]=x2;
y1[nr]=y2;
nr++;
}
x2++;
}
x2=x;
y2=n;
while (a[x2][y2]==0 && y2>y)
y2--;
while (y2>y)
{
if (a[x2][y2]==0)
{
a[x2][y2]=1;
x1[nr]=x2;
y1[nr]=y2;
nr++;
}
y2--;
}
x2=n;
y2=y;
while (a[x2][y2]==0 && x2>x)
x2--;
while (x2>x)
{
if (a[x2][y2]==0)
{
a[x2][y2]=1;
x1[nr]=x2;
y1[nr]=y2;
nr++;
}
x2--;
}
x2=x;
y2=1;
while (a[x2][y2]==0 && y2<y)
y2++;
while (y2<y)
{
if (a[x2][y2]==0)
{
a[x2][y2]=1;
x1[nr]=x2;
y1[nr]=y2;
nr++;
}
y2++;
}
}
}
int main ()
{
citire();
vasile();
freopen ("puncte.out","w",stdout);
printf ("%ld\n",nr);
fclose(stdout);
return 0;
}