Pagini recente » Cod sursa (job #2624807) | Cod sursa (job #422171) | Cod sursa (job #2477216) | Cod sursa (job #2110872) | Cod sursa (job #2282670)
#include <bits/stdc++.h>
using namespace std;
ifstream f("joc11.in");
ofstream g("joc11.out");
int nr,NR,n,V[60],m;
char b[60][60],a[60][60];
void collapse ()
{
int i,j,k;
for(j=1; j<=m; j++)
{
int cp=V[j],cpfin=cp;
for(i=n; i>=(n-cp); i--)
{
if(a[i][j]=='0')
{
for(k=i-1; k>=(n-cp); k--)
a[k+1][j]=a[k][j];
cpfin--;
i++;
cp--;
for(int l=1;l<=n;l++)
{for(int c=1;c<=m;c++)
cout<<a[l][c]<<" ";
cout<<'\n';
}
cout<<'\n';
}
}
V[j]=cp;
}
for(j=1; j<=m; j++)
{
if(V[j]+1==0)
{
for(i=0; i<=n+1; i++)
{
for(k=j+1; k<=m; k++)
a[i][k-1]=a[i][k];
}
for(k=j+1; k<=m; k++)
V[k-1]=V[k];
j--;
m--;
}
}
}
void fil (int x,int y,char c)
{
// cout<<x<<" "<<y<<" "<<b[x][y]<<'\n';
b[x][y]='0';
nr++;
if(b[x+1][y]==c)
{
fil(x+1,y,c);
}
if(b[x-1][y]==c)
{
fil(x-1,y,c);
}
if(b[x][y+1]==c)
{
fil(x,y+1,c);
}
if(b[x][y-1]==c)
{
fil(x,y-1,c);
}
}
void fil1 (int x,int y,char c)
{
a[x][y]='0';
if(a[x+1][y]==c)
{
fil1(x+1,y,c);
}
if(a[x-1][y]==c)
{
fil1(x-1,y,c);
}
if(a[x][y+1]==c)
{
fil1(x,y+1,c);
}
if(a[x][y-1]==c)
{
fil1(x,y-1,c);
}
}
int i,ok,maxim,poz1,poz2,j;
char c;
int main()
{
f>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
f>>a[i][j];
V[j]=n;
}
for(i=0; i<=n+1; i++)
{
a[i][0]='0';
a[i][m+1]='0';
}
for(j=0; j<=m+1; j++)
{
a[0][j]='0';
a[n+1][j]='0';
}
ok=1;
while(ok)
{
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
b[i][j]=a[i][j];
maxim=0;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
if(b[i][j]!='0')
{
nr=0;
fil(i,j,b[i][j]);
if(nr>maxim&&nr>=2)
{
maxim=nr;
poz1=i;
poz2=j;
}
}
}
if(maxim==0)
{
ok=0;
break;
}
/*for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<'\n';
}
cout<<'\n';
cout<<poz1<<" "<<poz2<<'\n';
*/
fil1(poz1,poz2,a[poz1][poz2]);
/*for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<'\n';
}
cout<<'\n';
*/
collapse();
/*
cout<<n<<'\n';
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<'\n';
}
cout<<'\n';
cout<<"--------------------------------------------"<<'\n';
*/
NR++;
}
g<<NR;
return 0;
}