Advertisement
a53

Untitled

a53
Jan 12th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <stdlib.h>
  4. #include <fstream>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. ifstream fin ("cuvinte.in");
  10. ofstream fout ("cuvinte.out");
  11.  
  12. int n,i,j,l[1001],m,k,rd[1001];
  13. long long a1[101][101];
  14. char c[101][101],a[101][101];
  15. char vid[1001];
  16. int cmp (int l, int c, char *s, int d)
  17. {
  18. while(d)
  19. {
  20. if(*s!=a[l][c] && a[l][c]!=0)return 0;
  21. s++;c++;d--;
  22. }
  23. return 1;
  24. }
  25. int k1;
  26. int cmp1 (int i, int j, char *s, int d)
  27. {
  28. while(d)
  29. {
  30. if(a[i][j]!=*s && a[i][j]!=0)return 0;
  31. i++;s++;d--;
  32. }
  33. return 1;
  34. }
  35. int del (int i, int j, char *s, int d, int ind)
  36. {
  37. while(d)
  38. {
  39. if(a1[i][j])
  40. a1[i][j]-=(1<<(ind-1));
  41. if(!a1[i][j])
  42. a[i][j]=0;i++;d--;
  43. }
  44. }
  45. int add (int i, int j, char *s, int d, int ind)
  46. {
  47. while(d)
  48. {
  49. a1[i][j]+=(1<<(ind-1));
  50. a[i][j]=*s;
  51. s++;i++;d--;
  52. }
  53. }
  54. int add1 (int i, int j, char *s, int d, int ind)
  55. {
  56. while(d)
  57. {
  58. a1[i][j]+=(1<<(ind-1));
  59. a[i][j]=*s;s++;j++;d--;
  60. }
  61. }
  62. int del1 (int i, int j, char *s, int d, int ind)
  63. {
  64. while(d)
  65. {
  66. if(a1[i][j])
  67. a1[i][j]-=(1<<(ind-1));
  68. if(!a1[i][j])
  69. a[i][j]=0;j++;d--;
  70. }
  71. }
  72. int f1 (int k, int ct)
  73. {
  74. if(ct<=k1){
  75. int i,j;
  76. for(i=1;i<=n;i++)
  77. for(j=1;j<=m;j++)
  78. {
  79. if(j+l[k]-1<=m && cmp(i,j,c[k],l[k]))
  80. {
  81. add1(i,j,c[k],l[k],k);
  82. f1(rd[k+1],ct+1);
  83. del1(i,j,c[k],l[k],k);
  84. }
  85. if(i<=n-l[k]+1 && cmp1(i,j,c[k],l[k]))
  86. {
  87. add(i,j,c[k],l[k],k);
  88. f1(rd[k+1],ct+1);
  89. del(i,j,c[k],l[k],k);
  90. }
  91. }
  92. }
  93. else
  94. {
  95. for(i=1;i<=n;i++,fout<<"\n")
  96. for(j=1;j<=m;j++)
  97. {
  98. if(a[i][j])fout<<a[i][j]<<" ";
  99. else
  100. fout<<"- ";
  101. }
  102. // fout<<"\n";
  103. exit(0);
  104. }
  105. }
  106. int main()
  107. {
  108. fin>>k>>n>>m;
  109. k1=k;
  110. // memset(vid,0,43);
  111. for(i=1,fin.get();i<=k;i++)
  112. fin>>c[i],l[i]=strlen(c[i]),rd[i]=i;
  113. do{
  114. f1(rd[1],1);
  115. }while(next_permutation(rd+1,rd+1+k));
  116. return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement