Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int tetr[30][30], tetr1[30][30];
- bool used[30][30];
- int n, m, res3 = 0, res = 1;
- int a, b, c;
- int max1 = 0, max2 = 0, max3 = 0;
- void buble(int tetr[30][30]){
- for (int l = 1; l <= n - 2; l++){
- for (int k = 1; k <= m; k++){
- if (tetr[l][k] == tetr[l + 1][k] && tetr[l + 1][k] == tetr[l + 2][k] && tetr[l + 1][k] != 0){
- if (used[l][k] == 0){used[l][k] = 1; res++;}
- if (used[l + 1][k] == 0){used[l + 1][k] = 1; res++;}
- if (used[l + 2][k] == 0){used[l + 2][k] = 1; res++;}
- }
- }
- }
- }
- void buuble(int tetr[30][30]){
- for (int l = 1; l <= n; l++){
- for (int k = 1; k <= m - 2; k++){
- if (tetr[l][k] == tetr[l][k + 1] && tetr[l][k + 1] == tetr[l][k + 2] && tetr[l][k + 2] != 0){
- if (used[l][k] == 0){used[l][k] = 1; res++;}
- if (used[l][k + 1] == 0){used[l][k + 1] = 1; res++;}
- if (used[l][k + 2] == 0){used[l][k + 2] = 1; res++;}
- }
- }
- }
- }
- void buuuble(int tetr[30][30]){
- for (int l = 3; l <= n - 2; l++){
- for (int k = 1; k <= m - 2; k++){
- if (tetr[l][k] == tetr[l + 1][k + 1] && tetr[l + 1][k + 1] == tetr[l + 2][k + 2] && tetr[l + 2][k + 2] != 0){
- if (used[l][k] == 0){used[l][k] = 1; res++;}
- if (used[l + 1][k + 1] == 0){used[l + 1][k + 1] = 1; res++;}
- if (used[l + 2][k + 2] == 0){used[l + 2][k + 2] = 1; res++;}
- }
- if (tetr[l][k] == tetr[l - 1][k + 1] && tetr[l - 1][k + 1] == tetr[l - 2][k + 2] && tetr[l - 2][k + 2] != 0){
- if (used[l][k] == 0){used[l][k] = 1; res++;}
- if (used[l - 1][k + 1] == 0){used[l - 1][k + 1] = 1; res++;}
- if (used[l - 2][k + 2] == 0){used[l - 2][k + 2] = 1; res++;}
- }
- }
- }
- }
- void delet(int tetr[30][30]){
- for (int u = 1; u <= m; u++)
- for (int y = 1; y <= n; y++)
- for (int l = n; l > 1; l--)
- if (tetr[l][u] == 0)
- for (int k = l - 1; k >= 1; k--){
- tetr[k + 1][u] = tetr[k][u];
- tetr[k][u] = 0;
- }
- for (int l = 1; l <= n; l++)
- for (int k = 1; k <= m; k++)
- if (used[l][k] == 1) used[l][k] = 0;
- }
- int main(){
- cin >> n >> m;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++){
- cin >> tetr[i][j];
- tetr1[i][j] = tetr[i][j];
- }
- cin >> a >> b >> c;
- //1
- for (int i = 1; i <= m; i++){
- for (int l = 1; l <= n; l++)
- for (int k = 1; k <= m; k++)
- tetr[l][k] = tetr1[l][k];
- for (int j = n; j >= 1; j--){
- if ((tetr[j][i] == 0)){
- tetr[j][i] = c;
- tetr[j - 1][i] = b;
- tetr[j - 2][i] = a;
- break;
- }
- }
- res3 = 0;
- res = 1;
- while (res != 0){
- res = 0;
- buble(tetr);
- buuble(tetr);
- buuuble(tetr);
- res3 += res;
- for (int l = 1; l <= n; l++)
- for (int k = 1; k <= m; k++)
- if (used[l][k] == 1) tetr[l][k] = 0;
- delet(tetr);
- }
- if (res3 > max3){
- max3 = res3;
- max1 = i - 1;
- }
- if (res3 == max3)
- if (i - 1 < max1) max1 = i - 1;
- }
- //2
- for (int i = 1; i <= m; i++){
- for (int l = 1; l <= n; l++)
- for (int k = 1; k <= m; k++)
- tetr[l][k] = tetr1[l][k];
- for (int j = n; j >= 1; j--){
- if ((tetr[j][i] == 0)){
- tetr[j][i] = a;
- tetr[j - 1][i] = c;
- tetr[j - 2][i] = b;
- break;
- }
- }
- res3 = 0;
- res = 1;
- while (res != 0){
- res = 0;
- buble(tetr);
- buuble(tetr);
- buuuble(tetr);
- res3 += res;
- for (int l = 1; l <= n; l++)
- for (int k = 1; k <= m; k++)
- if (used[l][k] == 1) tetr[l][k] = 0;
- delet(tetr);
- }
- if (res3 > max3){
- max3 = res3;
- max1 = i - 1;
- max2 = 1;
- }
- if (res3 == max3)
- if (i - 1 < max1){
- max1 = i - 1;
- max2 = 1;
- }
- }
- //3
- for (int i = 1; i <= m; i++){
- for (int l = 1; l <= n; l++)
- for (int k = 1; k <= m; k++)
- tetr[l][k] = tetr1[l][k];
- for (int j = n; j >= 1; j--){
- if ((tetr[j][i] == 0)){
- tetr[j][i] = b;
- tetr[j - 1][i] = a;
- tetr[j - 2][i] = c;
- break;
- }
- }
- res3 = 0;
- res = 1;
- while (res != 0){
- res = 0;
- buble(tetr);
- buuble(tetr);
- buuuble(tetr);
- res3 += res;
- for (int l = 1; l <= n; l++)
- for (int k = 1; k <= m; k++)
- if (used[l][k] == 1) tetr[l][k] = 0;
- delet(tetr);
- }
- if (res3 > max3){
- max3 = res3;
- max1 = i - 1;
- max2 = 2;
- }
- if (res3 == max3)
- if (i - 1 < max1){
- max1 = i - 1;
- max2 = 2;
- }
- }
- cout << max1 << " " << max2 << " " << max3;
- }
Add Comment
Please, Sign In to add comment