Trifon Titus (tytus11)
Vezi solutiile trimise | Nume | Trifon Titus |
---|---|---|
Cont | tytus11 | |
Rating | 0 | |
Statut | Utilizator normal | |
Forum | trimite mesaj privat, vezi activitate |
Revizia anterioară Revizia următoare
![]() |
Despre mine
(completeaza aici: studii, an de absolvire, institutie de invatamant, locatie, profesori pregatitori, site personal ...)#include <fstream>
using namespace std;
int x120[120],w20001,col10001,lin10001;
int main()
{
int n,i,j,tot=0,OK=1,ok=1,b,vector=0,v,a,c,cc,lc,inc,sf,sum=1,kl4={-1,1,0,0},kc4={0,0,-1,1};
ifstream f("lacuri.in");
ofstream g("lacuri.out");
f>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
f>>x[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(x[i][j]==1)
{
v=j+1;
while(x[i][v]==1)
{sum++;
v++;}
x[i][j]=-1;
inc=1;
sf=1;
lin[sf]=i;
col[sf]=j;
while(inc<=sf)
{for(c=0;c<=3;c++)
{
cc=col[inc]+kc©;
lc=lin[inc]+kl©;
if(x[lc][cc]==1)
{
x[lc][cc]=-1;
sf++;
lin[sf]=lc;
col[sf]=cc;
}
}
inc++;}
for(a=i;a<i+sum;a++)
for(b=j;b<j+sum;b++)
if(x[a][b]!=-1)
ok=0;
if(ok==1)
{
for(a=j-1;a<sum+j;++a)
{
if(x[i-1][a]!=0) ok=0;
if(x[i+sum][a]!=0) ok=0;
}
for(a=i-1;a<sum+i;++a)
{
if(x[a][j-1]!=0) ok=0;
if(x[a][j+sum]!=0) ok=0;
}
}
if(ok==1)
tot++;
else
OK=0;
sum=1;
ok=1;
inc=1;
sf=1;
}
g<<tot<<'\n';
if(OK==1)
{
x1[1]=1;
inc=1;
sf=1;
lin[sf]=1;
col[sf]=1;
while(inc<=sf)
{for(c=0;c<=3;c++)
{
lc=lin[inc]+kl©;
cc=col[inc]+kc©;
if(lc>0&&lc<=n&&cc>0&&cc<=n)
if(x[lc][cc]==0)
{
x[lc][cc]=x[lin[inc]][col[inc]]+1;
sf++;
lin[sf]=lc;
col[sf]=cc;
}
}
inc++;}
cc=n;
lc=n;
v=x[n][n];
while(v!=1)
for(c=0;c<=3;c++)
if(x[lc+kl©][cc+kc©]==v-1)
{
vector++;
w[vector]=cc+kc©;
vector++;
w[vector]=lc+kl©;
lc=lc+kl©;
cc=cc+kc©;
v--;
break;
}
}
for(a=vector/2;a>0;a--)
g<<w[2*a]<<" "<<w[2*a-1]<<'\n';
g<<n<<" "<<n<<'\n';
f.close();
g.close();
}
Distinctii primite
- (completeaza aici: locuri obtinute la concursuri de informatica)
Prieteni pe infoarena
- (completeaza aici: link-uri catre profilele altor utilizatori infoarena pe care ii cunosti)