Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define N 65
- using namespace std;
- ifstream fin("miting.in");
- ofstream fout("miting.out");
- short sz, x1=105, x2, y1=105, y2, cerinta, n, m, i, j, k, x[N], y[N], l[N], r[N], sol[N];
- char s[11], a[N][N];
- bool used[N];
- void bkt(int k)
- {
- if(k==0)
- {
- for(int i=0;i<sz;++i)
- {
- sol[k]=i;
- l[k]=r[k]=i;
- used[i]=1;
- bkt(k+1);
- used[i]=0;
- }
- }
- else if(k<sz)
- {
- if(l[k-1]-1>=0&&!used[l[k-1]-1])
- {
- sol[k]=l[k-1]-1;
- used[l[k-1]-1]=1;
- l[k]=l[k-1]-1,r[k]=r[k-1];
- bkt(k+1);
- used[l[k-1]-1]=0;
- }
- if(r[k-1]+1<sz&&!used[r[k-1]+1])
- {
- sol[k]=r[k-1]+1;
- used[r[k-1]+1]=1;
- l[k]=l[k-1],r[k]=r[k-1]+1;
- bkt(k+1);
- used[r[k-1]+1]=0;
- }
- }
- else
- {
- for(int i=0;i<sz;++i)
- fout<<sol[i]<<' ';
- fout<<'\n';
- }
- }
- int main()
- {
- fin>>cerinta>>n>>m>>s;
- sz=strlen(s);
- for(i=1;i<=n;++i)
- for(j=1;j<=m;++j)
- {
- fin>>a[i][j];
- if(a[i][j]!='_'&&a[i][j]!='#')
- {
- if(cerinta==1)
- {
- x1=min(x1,i);
- x2=max(x2,i);
- y1=min(y1,j);
- y2=max(y2,j);
- continue;
- }
- for(k=0;k<sz;++k)
- if(a[i][j]==s[k])
- x[k]=i,y[k]=j;
- }
- }
- if(cerinta==1)
- {
- fout<<(x2-x1+1)*(y2-y1+1)<<'\n';
- return 0;
- }
- /** if(k<=3)
- {
- for(i=0;i<sz;++i)
- {
- lee(x[i],y[i],i);
- if(k==2)
- {
- fout<<mat[i][x[i+1]][y[i+1]]<<'\n';
- return 0;
- }
- }
- }*/
- bkt(0);
- // ans=min(ans,mat[0][x[1][])
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement