Pagini recente »
Rating CIPRIAN VASILESCU (ciprian.vasi)
|
Istoria paginii utilizator/tcostinr
|
Monitorul de evaluare
|
Istoria paginii runda/2017-11-26-test-5
|
Cod sursă (job #143338)
Cod sursă (job
#143338)
#include <cstdio>
#include <bitset>
#define VER 0
#define N 1005
using namespace std;
bitset<N> b[N][N],z,E[N],A;
int n,i,j,e,s[N][N],ec[N];
void verifica();
int main()
{
if(VER){verifica();return 0;}
freopen("switch5.in","r",stdin);
freopen("switch5.out","w",stdout);
scanf("%d",&n);
z[0]=1;
for(i=1;i<=n;i++)
b[1][i][i]=1;
for(i=2;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]=b[i-1][j-1]^b[i-1][j]^b[i-1][j+1]^b[i-2][j]^z;
for(j=1;j<=n;j++)
E[j]=b[n][j-1]^b[n][j]^b[n][j+1]^b[n-1][j]^z;
for(e=1,j=1;j<=n;j++)
{
for(i=e;i<=n;i++)
if(E[i][j]==1)break;
if(i==n+1)continue;
A=E[j];E[j]=E[i];E[i]=A;
for(i=1;i<=n;i++)
if(i-e)
if(E[i][j]==1)
E[i]^=E[e];
ec[j]=e++;
}
for(j=1;j<=n;j++)
{
if(ec[j])
s[1][j]=E[ec[j]][0];
printf("%d",s[1][j]);
}
printf("\n");
for(i=2;i<=n;i++)
{
for(j=1;j<=n;j++)
{
s[i][j]=s[i-2][j]^s[i-1][j-1]^s[i-1][j]^s[i-1][j+1]^1;
printf("%d",s[i][j]);
}
printf("\n");
}
return 0;
}
void verifica()
{
freopen("switch5.in","r",stdin);
scanf("%d",&n);
fclose(stdin);
freopen("switch5.out","r",stdin);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%1d",&e);
if(e)
{
s[i][j]^=1;
s[i-1][j]^=1;
s[i+1][j]^=1;
s[i][j-1]^=1;
s[i][j+1]^=1;
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(!s[i][j])
{
printf("NU E BINE\n");
return;
}
printf("PERFECT\n");
return;
}