summaryrefslogtreecommitdiff
path: root/euler11.c
diff options
context:
space:
mode:
Diffstat (limited to 'euler11.c')
-rw-r--r--euler11.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/euler11.c b/euler11.c
new file mode 100644
index 0000000..ea43b48
--- /dev/null
+++ b/euler11.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#define MAX 20
+
+int grid[MAX][MAX];
+int biggest[MAX][MAX];
+
+int main()
+{
+ int i,j,M=0;
+ for (i=0;i<MAX;++i){
+ for (j=0;j<MAX;++j){
+ scanf("%d",&grid[i][j]);
+ }
+ }
+ for (i=0;i<MAX;++i){
+ for (j=0;j<MAX;++j){
+ int p;
+ biggest[i][j]=0;
+ if (i<MAX-3){
+ p = grid[i][j]*grid[i+1][j]*grid[i+2][j]*grid[i+3][j];
+ }
+ if (j<MAX-3){
+ p = grid[i][j]*grid[i][j+1]*grid[i][j+2]*grid[i][j+3];
+ if (p>biggest[i][j])
+ biggest[i][j]=p;
+ if (i<MAX-3){
+ p = grid[i][j]*grid[i+1][j+1]*
+ grid[i+2][j+2]*grid[i+3][j+3];
+ if (p>biggest[i][j])
+ biggest[i][j]=p;
+ }
+ if (i>=3){
+ p = grid[i][j]*grid[i-1][j+1]*
+ grid[i-2][j+2]*grid[i-3][j+3];
+ if (p>biggest[i][j])
+ biggest[i][j]=p;
+ }
+ }
+ if (biggest[i][j]>M)
+ M=biggest[i][j];
+ }
+ }
+ printf("%d\n",M);
+ return 0;
+}
+