#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if 0
int func(int a1_row, int a1_col, int a2_row, int a2_col, int a3_row, int a3_col, double ***a1_dst, int ***a2_dst, float ***a3_dst)
{
double **a1;
int **a2;
float ** a3;
int i;
a1
= (double **)malloc(sizeof(double *) * a1_row
); for(i = 0; i < a1_row; ++i)
a1
[i
] = (double *)malloc(sizeof(double) * a1_col
);
a2
= (int **)malloc(sizeof(int *) * a2_row
); for(i = 0; i < a2_row; ++i)
a2
[i
] = (int *)malloc(sizeof(int) * a2_col
);
a3
= (float **)malloc(sizeof(float *) * a3_row
); for(i = 0; i < a3_row; ++i)
a3
[i
] = (float *)malloc(sizeof(float) * a3_col
);
*a1_dst = a1;
*a2_dst = a2;
*a3_dst = a3;
return 1;
}
#else
int func(int a1_row, int a1_col, int a2_row, int a2_col, int a3_row, int a3_col, double ***a1_dst, int ***a2_dst, float ***a3_dst)
{
double **a1 = NULL;
int **a2 = NULL;
float **a3 = NULL;
int i;
int suceeded = 1;
a1
= (double **)malloc(sizeof(double *) * a1_row
); suceeded = (int)a1;
if(suceeded)
{
memset(a1
, 0, sizeof(double *) * a1_row
); }
for(i = 0; i < a1_row && suceeded; ++i)
{
a1
[i
] = (double *)malloc(sizeof(double) * a1_col
); suceeded = (int)a1[i];
}
if(suceeded)
{
a2
= (int **)malloc(sizeof(int *) * a2_row
); suceeded = (int)a2;
}
if(suceeded)
{
memset(a2
, 0, sizeof(int *) * a2_row
); }
for(i = 0; i < a2_row && suceeded; ++i)
{
a2
[i
] = (int *)malloc(sizeof(int) * a2_col
); suceeded = (int)a2[i];
}
if(suceeded)
{
a3
= (float **)malloc(sizeof(float *) * a3_row
); suceeded = (int)a3;
}
if(suceeded)
{
memset(a3
, 0, sizeof(float *) * a3_row
); }
for(i = 0; i < a3_row && suceeded; ++i)
{
a3
[i
] = (float *)malloc(sizeof(float) * a3_col
); suceeded = (int)a3[i];
}
if(suceeded)
{
*a1_dst = a1;
*a2_dst = a2;
*a3_dst = a3;
}
else
{
if(a3)
{
for(i = a3_row - 1; i >= 0; --i)
{
if(a3[i])
}
}
if(a2)
{
for(i = a2_row - 1; i >= 0; --i)
{
if(a2[i])
}
}
if(a1)
{
for(i = a1_row - 1; i >= 0; --i)
{
if(a1[i])
}
}
}
return suceeded? 1: 0;
}
#endif
#define A1_ROW (1000)
#define A1_COL (2000)
#define A2_ROW (3000)
#define A2_COL (4000)
#define A3_ROW (5000)
#define A3_COL (6000)
int main(void)
{
double **a1 = NULL;
int **a2 = NULL;
float **a3 = NULL;
int result = func(A1_ROW, A1_COL, A2_ROW, A2_COL, A3_ROW, A3_COL, &a1, &a2, &a3);
printf("result = %d\n", result
);
if(result)
{
int i;
for(i = A3_ROW - 1; i >= 0; --i)
{
}
for(i = A2_ROW - 1; i >= 0; --i)
{
}
for(i = A1_ROW - 1; i >= 0; --i)
{
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2lmIDAKCmludCBmdW5jKGludCBhMV9yb3csIGludCBhMV9jb2wsIGludCBhMl9yb3csIGludCBhMl9jb2wsIGludCBhM19yb3csIGludCBhM19jb2wsIGRvdWJsZSAqKiphMV9kc3QsIGludCAqKiphMl9kc3QsIGZsb2F0ICoqKmEzX2RzdCkKewogICAgZG91YmxlICoqYTE7CglpbnQgKiphMjsKCWZsb2F0ICoqIGEzOwoJaW50IGk7CgoJYTEgPSAoZG91YmxlICoqKW1hbGxvYyhzaXplb2YoZG91YmxlICopICogYTFfcm93KTsKCWZvcihpID0gMDsgaSA8IGExX3JvdzsgKytpKQoJCWExW2ldID0gKGRvdWJsZSAqKW1hbGxvYyhzaXplb2YoZG91YmxlKSAqIGExX2NvbCk7CgoJYTIgPSAoaW50ICoqKW1hbGxvYyhzaXplb2YoaW50ICopICogYTJfcm93KTsKCWZvcihpID0gMDsgaSA8IGEyX3JvdzsgKytpKQoJCWEyW2ldID0gKGludCAqKW1hbGxvYyhzaXplb2YoaW50KSAqIGEyX2NvbCk7CgoJYTMgPSAoZmxvYXQgKiopbWFsbG9jKHNpemVvZihmbG9hdCAqKSAqIGEzX3Jvdyk7Cglmb3IoaSA9IDA7IGkgPCBhM19yb3c7ICsraSkKCQlhM1tpXSA9IChmbG9hdCAqKW1hbGxvYyhzaXplb2YoZmxvYXQpICogYTNfY29sKTsKCgkqYTFfZHN0ID0gYTE7CgkqYTJfZHN0ID0gYTI7CgkqYTNfZHN0ID0gYTM7CglyZXR1cm4gMTsKfQoKI2Vsc2UKCmludCBmdW5jKGludCBhMV9yb3csIGludCBhMV9jb2wsIGludCBhMl9yb3csIGludCBhMl9jb2wsIGludCBhM19yb3csIGludCBhM19jb2wsIGRvdWJsZSAqKiphMV9kc3QsIGludCAqKiphMl9kc3QsIGZsb2F0ICoqKmEzX2RzdCkKewoJZG91YmxlICoqYTEgPSBOVUxMOwoJaW50ICoqYTIgPSBOVUxMOwoJZmxvYXQgKiphMyA9IE5VTEw7CglpbnQgaTsKCWludCBzdWNlZWRlZCA9IDE7CgoJYTEgPSAoZG91YmxlICoqKW1hbGxvYyhzaXplb2YoZG91YmxlICopICogYTFfcm93KTsKCXN1Y2VlZGVkID0gKGludClhMTsKCWlmKHN1Y2VlZGVkKQoJewoJCW1lbXNldChhMSwgMCwgc2l6ZW9mKGRvdWJsZSAqKSAqIGExX3Jvdyk7Cgl9Cglmb3IoaSA9IDA7IGkgPCBhMV9yb3cgJiYgc3VjZWVkZWQ7ICsraSkKCXsKCQlhMVtpXSA9IChkb3VibGUgKiltYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBhMV9jb2wpOwoJCXN1Y2VlZGVkID0gKGludClhMVtpXTsKCX0KCglpZihzdWNlZWRlZCkKCXsKCQlhMiA9IChpbnQgKiopbWFsbG9jKHNpemVvZihpbnQgKikgKiBhMl9yb3cpOwoJCXN1Y2VlZGVkID0gKGludClhMjsKCX0KCWlmKHN1Y2VlZGVkKQoJewoJCW1lbXNldChhMiwgMCwgc2l6ZW9mKGludCAqKSAqIGEyX3Jvdyk7Cgl9Cglmb3IoaSA9IDA7IGkgPCBhMl9yb3cgJiYgc3VjZWVkZWQ7ICsraSkKCXsKCQlhMltpXSA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGludCkgKiBhMl9jb2wpOwoJCXN1Y2VlZGVkID0gKGludClhMltpXTsKCX0KCglpZihzdWNlZWRlZCkKCXsKCQlhMyA9IChmbG9hdCAqKiltYWxsb2Moc2l6ZW9mKGZsb2F0ICopICogYTNfcm93KTsKCQlzdWNlZWRlZCA9IChpbnQpYTM7Cgl9CglpZihzdWNlZWRlZCkKCXsKCQltZW1zZXQoYTMsIDAsIHNpemVvZihmbG9hdCAqKSAqIGEzX3Jvdyk7Cgl9Cglmb3IoaSA9IDA7IGkgPCBhM19yb3cgJiYgc3VjZWVkZWQ7ICsraSkKCXsKCQlhM1tpXSA9IChmbG9hdCAqKW1hbGxvYyhzaXplb2YoZmxvYXQpICogYTNfY29sKTsKCQlzdWNlZWRlZCA9IChpbnQpYTNbaV07Cgl9CgoJaWYoc3VjZWVkZWQpCgl7CgkJKmExX2RzdCA9IGExOwoJCSphMl9kc3QgPSBhMjsKCQkqYTNfZHN0ID0gYTM7Cgl9CgllbHNlCgl7CgkJaWYoYTMpCgkJewoJCQlmb3IoaSA9IGEzX3JvdyAtIDE7IGkgPj0gMDsgLS1pKQoJCQl7CgkJCQlpZihhM1tpXSkKCQkJCQlmcmVlKGEzW2ldKTsKCQkJfQoJCQlmcmVlKGEzKTsKCQl9CgkJaWYoYTIpCgkJewoJCQlmb3IoaSA9IGEyX3JvdyAtIDE7IGkgPj0gMDsgLS1pKQoJCQl7CgkJCQlpZihhMltpXSkKCQkJCQlmcmVlKGEyW2ldKTsKCQkJfQoJCQlmcmVlKGEyKTsKCQl9CgkJaWYoYTEpCgkJewoJCQlmb3IoaSA9IGExX3JvdyAtIDE7IGkgPj0gMDsgLS1pKQoJCQl7CgkJCQlpZihhMVtpXSkKCQkJCQlmcmVlKGExW2ldKTsKCQkJfQoJCQlmcmVlKGExKTsKCQl9Cgl9CglyZXR1cm4gc3VjZWVkZWQ/IDE6IDA7Cn0KCiNlbmRpZgoKI2RlZmluZSBBMV9ST1cgKDEwMDApCiNkZWZpbmUgQTFfQ09MICgyMDAwKQojZGVmaW5lIEEyX1JPVyAoMzAwMCkKI2RlZmluZSBBMl9DT0wgKDQwMDApCiNkZWZpbmUgQTNfUk9XICg1MDAwKQojZGVmaW5lIEEzX0NPTCAoNjAwMCkKCmludCBtYWluKHZvaWQpCnsKCWRvdWJsZSAqKmExID0gTlVMTDsKCWludCAqKmEyID0gTlVMTDsKCWZsb2F0ICoqYTMgPSBOVUxMOwoJaW50IHJlc3VsdCA9IGZ1bmMoQTFfUk9XLCBBMV9DT0wsIEEyX1JPVywgQTJfQ09MLCBBM19ST1csIEEzX0NPTCwgJmExLCAmYTIsICZhMyk7CgoJcHJpbnRmKCJyZXN1bHQgPSAlZFxuIiwgcmVzdWx0KTsKCglpZihyZXN1bHQpCgl7CgkJaW50IGk7CgkJZm9yKGkgPSBBM19ST1cgLSAxOyBpID49IDA7IC0taSkKCQl7CgoJCQlmcmVlKGEzW2ldKTsKCQl9CgkJZnJlZShhMyk7CgoJCWZvcihpID0gQTJfUk9XIC0gMTsgaSA+PSAwOyAtLWkpCgkJewoJCQlmcmVlKGEyW2ldKTsKCQl9CgkJZnJlZShhMik7CgoJCWZvcihpID0gQTFfUk9XIC0gMTsgaSA+PSAwOyAtLWkpCgkJewoJCQlmcmVlKGExW2ldKTsKCQl9CgkJZnJlZShhMSk7Cgl9CgoJcmV0dXJuIDA7Cn0=