Diff to submission s879

dive.C

--- c4.s879.t114.p15.c11.0.dive.C
+++ c4.s1073.t114.p15.c11.0.dive.C
@@ -1,3 +1,4 @@
 #import <stdio.h>
+#import <assert.h>
 
 int main() {
@@ -10,13 +11,8 @@
 

-                //scanf("%s\n", p);
-
-                //puts("---");
-                //puts(p);
-                //puts("---");
 
                 if (M == 0) return 0;
 
-                char bg[M][N];
+                char bg[M][N], cg[M][N];
                 char f[M][N];
                 int lf1, lf2, rf1, rf2, tf1, tf2, bf1, bf2;
@@ -24,14 +20,73 @@
                 lf1 = N; lf2 = N; rf1 = 0; rf2 = 0; bf1 = 0; bf2 = 0; tf1 = M, tf2 = M;
 
-                for (int i = 0; i < M; i++)
+
+                int fMb=0, fNb=0, fMc=0, fNc=0;
+
+
+                for (int A = 0; A < M; A++){
+                        for (int B = 0; B < N; B++){
+                                bg[A][B]=getc(stdin);
+                        }
+                        while (getc(stdin) != '\n') { ; } // read until \n
+                }
+
+                while (getc(stdin) != '\n') { ; } // remove newline
+
+                for (int A = 0; A < M; A++){ // get foreground
+                        for (int B = 0; B < N; B++){
+                                cg[A][B] = getc(stdin);
+                        }
+                        while (getc(stdin) != '\n') { ; } // read until \n
+                }
+
+                // detect falcon bg
+                while (bg[fMb][fNb] != C){
+                        fNb++;
+                        if (fNb >= N){
+                                fNb = 0;
+                                fMb++;
+                        }
+                        assert( fMb < M);
+                }
+
+                // detect falcon cg
+                while (cg[fMc][fNc] != C){
+                        fNc++;
+                        if (fNc >= N){
+                                fNc = 0;
+                                fMc++;
+                        }
+                        assert(fMc < M);
+                }
+
+                // fix bg from cg
+                for (int A = 0; A < M; A++){
+                        for (int B = 0; B < N; B++) {
+                                if (bg[A][B] == C)
+                                        bg[A][B] = cg[A][B];
+                        }
+                }
+
+                //
+                for (int A = 0; A < M; A++){
+                        for (int B = 0; B < N; B++) {
+                                if (cg[A][B] == C) {
+                                        int Aoff = A + fMc - fMb;
+                                        int Boff = B + fNc - fNb;
+                                        if ((Aoff >= 0) && (Aoff < M) && (Boff >= 0) && (Boff < N))
+                                                bg[Aoff][Boff] = C;
+                                }
+                        }
+                }
+
+
+
+
+                /*for (int i = 0; i < M; i++) ///// odstran"""
                 {
                         fgets(p, 2000, stdin);
                         p[N] = '\0';
 
-                        //puts("*");
-                    //puts(p);
-                        //puts("*");
-                        //printf(">%s<", p);
-                        
+                
                         for (int j = 0; j < N; j++)
                         {
@@ -46,7 +101,9 @@
                                 }
                         }
-                }
+                }*/
                 
-                for (int i = 0; i < M; i++) {
+                
+
+                /*for (int i = 0; i < M; i++) {
                         for (int j = 0; j < N; j++) {
                                 if (C == '0')
@@ -55,6 +112,7 @@
                                         f[i][j] = '0';
                         }
-                }
+                }*/
 
+                /*
                 fgets(p, 2000, stdin);
 
@@ -78,6 +136,6 @@
                                 }
                         }
-                }
-
+                }*/
+                /*
                 dx = lf2 - lf1;
                 dy = tf2 - tf1;
@@ -88,13 +146,13 @@
                                         bg[i + dy][j + dx] = C;
                         }
-                }
+                }*/
 
                 for (int i = 0; i < M; i++) {
                         for (int j = 0; j < N; j++) {
-                                printf("%c", bg[i][j]);
+                                putc(bg[i][j], stdout);
                         }
-                        printf("\n");
+                        putc('\n', stdout);
                 }
-                printf("\n");
+                putc('\n', stdout);
         }