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);
}