#include <assert.h>
#include <ctype.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* readline();
char* ltrim(char*);
char* rtrim(char*);
char** split_string(char*);
// Complete the find_largest_in_row_smallest_in_column_element_in_matrix function below.
int find_largest_in_row_smallest_in_column_element_in_matrix(int R, int C, int** matrix) {
int i,j;
int a1[1005],a2[1005],a3[1005],a4[1005];
for(j=0;j<C;j++)
{
int minn=1000000009,x,y;
for(i=0;j<R;i++)
{
if(minn>matrix[j][i])
{
x=i;
y=j;
minn=matrix[j][i];
}
}
a1[j]=x;
a2[j]=y;
}
for(i=0;i<R;i++)
{
int maxx=0,x,y;
for(j=0;j<C;j++)
{
if(maxx<matrix[i][j])
{
maxx=matrix[i][j];
x=i;y=j;
}
}
a3[i]=x;
a4[i]=y;
}
int ans=-1;
for(int i=0;i<C;i++)
{
int a=a1[i],b=a2[i];
for(int j=0;j<R;j++)
{
if(a3[j]==a && a4[j]==b)
ans=matrix[a][b];
}
}
return ans;
}
int main()
{
char* matrix_rows_endptr;
char* matrix_rows_str = ltrim(rtrim(readline()));
int matrix_rows
= strtol(matrix_rows_str
, &matrix_rows_endptr
, 10);
if (matrix_rows_endptr
== matrix_rows_str
|| *matrix_rows_endptr
!= '\0') { exit(EXIT_FAILURE
); }
char* matrix_columns_endptr;
char* matrix_columns_str = ltrim(rtrim(readline()));
int matrix_columns
= strtol(matrix_columns_str
, &matrix_columns_endptr
, 10);
if (matrix_columns_endptr
== matrix_columns_str
|| *matrix_columns_endptr
!= '\0') { exit(EXIT_FAILURE
); }
int** matrix
= malloc(matrix_rows
* sizeof(int*));
for (int i = 0; i < matrix_rows; i++) {
*(matrix
+ i
) = malloc(matrix_columns
* (sizeof(int)));
char** matrix_item_temp = split_string(rtrim(readline()));
for (int j = 0; j < matrix_columns; j++) {
char* matrix_item_endptr;
char* matrix_item_str = *(matrix_item_temp + j);
int matrix_item
= strtol(matrix_item_str
, &matrix_item_endptr
, 10);
if (matrix_item_endptr
== matrix_item_str
|| *matrix_item_endptr
!= '\0') { exit(EXIT_FAILURE
); }
*(*(matrix + i) + j) = matrix_item;
}
}
int res = find_largest_in_row_smallest_in_column_element_in_matrix(matrix_rows, matrix_columns, matrix);
return 0;
}
char* readline() {
size_t alloc_length = 1024;
size_t data_length = 0;
char* data
= malloc(alloc_length
);
while (true) {
char* cursor = data + data_length;
char* line
= fgets(cursor
, alloc_length
- data_length
, stdin
);
if (!line) {
break;
}
data_length
+= strlen(cursor
);
if (data_length < alloc_length - 1 || data[data_length - 1] == '\n') {
break;
}
alloc_length <<= 1;
data
= realloc(data
, alloc_length
);
if (!data) {
data = '\0';
break;
}
}
if (data[data_length - 1] == '\n') {
data[data_length - 1] = '\0';
if (!data) {
data = '\0';
}
} else {
data
= realloc(data
, data_length
+ 1);
if (!data) {
data = '\0';
} else {
data[data_length] = '\0';
}
}
return data;
}
char* ltrim(char* str) {
if (!str) {
return '\0';
}
if (!*str) {
return str;
}
while (*str
!= '\0' && isspace(*str
)) { str++;
}
return str;
}
char* rtrim(char* str) {
if (!str) {
return '\0';
}
if (!*str) {
return str;
}
char* end
= str
+ strlen(str
) - 1;
while (end
>= str
&& isspace(*end
)) { end--;
}
*(end + 1) = '\0';
return str;
}
char** split_string(char* str) {
char** splits = NULL;
char* token
= strtok(str
, " ");
int spaces = 0;
while (token) {
splits
= realloc(splits
, sizeof(char*) * ++spaces
);
if (!splits) {
return splits;
}
splits[spaces - 1] = token;
}
return splits;
}
I2luY2x1ZGUgPGFzc2VydC5oPgojaW5jbHVkZSA8Y3R5cGUuaD4KI2luY2x1ZGUgPGxpbWl0cy5oPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8c3RkYm9vbC5oPgojaW5jbHVkZSA8c3RkZGVmLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKY2hhciogcmVhZGxpbmUoKTsKY2hhciogbHRyaW0oY2hhciopOwpjaGFyKiBydHJpbShjaGFyKik7CmNoYXIqKiBzcGxpdF9zdHJpbmcoY2hhciopOwoKCgovLyBDb21wbGV0ZSB0aGUgZmluZF9sYXJnZXN0X2luX3Jvd19zbWFsbGVzdF9pbl9jb2x1bW5fZWxlbWVudF9pbl9tYXRyaXggZnVuY3Rpb24gYmVsb3cuCmludCBmaW5kX2xhcmdlc3RfaW5fcm93X3NtYWxsZXN0X2luX2NvbHVtbl9lbGVtZW50X2luX21hdHJpeChpbnQgUiwgaW50IEMsIGludCoqIG1hdHJpeCkgewogICAgaW50IGksajsKICAgIGludCBhMVsxMDA1XSxhMlsxMDA1XSxhM1sxMDA1XSxhNFsxMDA1XTsKICAgIGZvcihqPTA7ajxDO2orKykKICAgIHsKICAgICAgICBpbnQgbWlubj0xMDAwMDAwMDA5LHgseTsKICAgICAgICBmb3IoaT0wO2o8UjtpKyspCiAgICAgICAgewogICAgICAgICAgICBpZihtaW5uPm1hdHJpeFtqXVtpXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB4PWk7CiAgICAgICAgICAgICAgICAgICAgeT1qOwogICAgICAgICAgICAgICAgICAgIG1pbm49bWF0cml4W2pdW2ldOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBhMVtqXT14OwogICAgICAgIGEyW2pdPXk7CiAgICB9CiAgICBmb3IoaT0wO2k8UjtpKyspCiAgICB7CiAgICAgICAgaW50IG1heHg9MCx4LHk7CiAgICAgICAgZm9yKGo9MDtqPEM7aisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYobWF4eDxtYXRyaXhbaV1bal0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG1heHg9bWF0cml4W2ldW2pdOwogICAgICAgICAgICAgICAgeD1pO3k9ajsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBhM1tpXT14OwogICAgICAgIGE0W2ldPXk7CiAgICB9CiAgICBwcmludGYoImhlcmUiKTsKICAgIGludCBhbnM9LTE7CiAgICBmb3IoaW50IGk9MDtpPEM7aSsrKQogICAgewogICAgICAgIGludCBhPWExW2ldLGI9YTJbaV07CiAgICAgICAgZm9yKGludCBqPTA7ajxSO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGEzW2pdPT1hICYmIGE0W2pdPT1iKQogICAgICAgICAgICBhbnM9bWF0cml4W2FdW2JdOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbnM7Cgp9CgppbnQgbWFpbigpCnsKICAgIEZJTEUqIGZwdHIgPSBmb3BlbihnZXRlbnYoIk9VVFBVVF9QQVRIIiksICJ3Iik7CgogICAgY2hhciogbWF0cml4X3Jvd3NfZW5kcHRyOwogICAgY2hhciogbWF0cml4X3Jvd3Nfc3RyID0gbHRyaW0ocnRyaW0ocmVhZGxpbmUoKSkpOwogICAgaW50IG1hdHJpeF9yb3dzID0gc3RydG9sKG1hdHJpeF9yb3dzX3N0ciwgJm1hdHJpeF9yb3dzX2VuZHB0ciwgMTApOwoKICAgIGlmIChtYXRyaXhfcm93c19lbmRwdHIgPT0gbWF0cml4X3Jvd3Nfc3RyIHx8ICptYXRyaXhfcm93c19lbmRwdHIgIT0gJ1wwJykgeyBleGl0KEVYSVRfRkFJTFVSRSk7IH0KCiAgICBjaGFyKiBtYXRyaXhfY29sdW1uc19lbmRwdHI7CiAgICBjaGFyKiBtYXRyaXhfY29sdW1uc19zdHIgPSBsdHJpbShydHJpbShyZWFkbGluZSgpKSk7CiAgICBpbnQgbWF0cml4X2NvbHVtbnMgPSBzdHJ0b2wobWF0cml4X2NvbHVtbnNfc3RyLCAmbWF0cml4X2NvbHVtbnNfZW5kcHRyLCAxMCk7CgogICAgaWYgKG1hdHJpeF9jb2x1bW5zX2VuZHB0ciA9PSBtYXRyaXhfY29sdW1uc19zdHIgfHwgKm1hdHJpeF9jb2x1bW5zX2VuZHB0ciAhPSAnXDAnKSB7IGV4aXQoRVhJVF9GQUlMVVJFKTsgfQoKICAgIGludCoqIG1hdHJpeCA9IG1hbGxvYyhtYXRyaXhfcm93cyAqIHNpemVvZihpbnQqKSk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXRyaXhfcm93czsgaSsrKSB7CiAgICAgICAgKihtYXRyaXggKyBpKSA9IG1hbGxvYyhtYXRyaXhfY29sdW1ucyAqIChzaXplb2YoaW50KSkpOwoKICAgICAgICBjaGFyKiogbWF0cml4X2l0ZW1fdGVtcCA9IHNwbGl0X3N0cmluZyhydHJpbShyZWFkbGluZSgpKSk7CgogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWF0cml4X2NvbHVtbnM7IGorKykgewogICAgICAgICAgICBjaGFyKiBtYXRyaXhfaXRlbV9lbmRwdHI7CiAgICAgICAgICAgIGNoYXIqIG1hdHJpeF9pdGVtX3N0ciA9ICoobWF0cml4X2l0ZW1fdGVtcCArIGopOwogICAgICAgICAgICBpbnQgbWF0cml4X2l0ZW0gPSBzdHJ0b2wobWF0cml4X2l0ZW1fc3RyLCAmbWF0cml4X2l0ZW1fZW5kcHRyLCAxMCk7CgogICAgICAgICAgICBpZiAobWF0cml4X2l0ZW1fZW5kcHRyID09IG1hdHJpeF9pdGVtX3N0ciB8fCAqbWF0cml4X2l0ZW1fZW5kcHRyICE9ICdcMCcpIHsgZXhpdChFWElUX0ZBSUxVUkUpOyB9CgogICAgICAgICAgICAqKCoobWF0cml4ICsgaSkgKyBqKSA9IG1hdHJpeF9pdGVtOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgcmVzID0gZmluZF9sYXJnZXN0X2luX3Jvd19zbWFsbGVzdF9pbl9jb2x1bW5fZWxlbWVudF9pbl9tYXRyaXgobWF0cml4X3Jvd3MsIG1hdHJpeF9jb2x1bW5zLCBtYXRyaXgpOwoKICAgIGZwcmludGYoZnB0ciwgIiVkXG4iLCByZXMpOwoKICAgIGZjbG9zZShmcHRyKTsKCiAgICByZXR1cm4gMDsKfQoKY2hhciogcmVhZGxpbmUoKSB7CiAgICBzaXplX3QgYWxsb2NfbGVuZ3RoID0gMTAyNDsKICAgIHNpemVfdCBkYXRhX2xlbmd0aCA9IDA7CiAgICBjaGFyKiBkYXRhID0gbWFsbG9jKGFsbG9jX2xlbmd0aCk7CgogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBjaGFyKiBjdXJzb3IgPSBkYXRhICsgZGF0YV9sZW5ndGg7CiAgICAgICAgY2hhciogbGluZSA9IGZnZXRzKGN1cnNvciwgYWxsb2NfbGVuZ3RoIC0gZGF0YV9sZW5ndGgsIHN0ZGluKTsKCiAgICAgICAgaWYgKCFsaW5lKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgZGF0YV9sZW5ndGggKz0gc3RybGVuKGN1cnNvcik7CgogICAgICAgIGlmIChkYXRhX2xlbmd0aCA8IGFsbG9jX2xlbmd0aCAtIDEgfHwgZGF0YVtkYXRhX2xlbmd0aCAtIDFdID09ICdcbicpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBhbGxvY19sZW5ndGggPDw9IDE7CgogICAgICAgIGRhdGEgPSByZWFsbG9jKGRhdGEsIGFsbG9jX2xlbmd0aCk7CgogICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICBkYXRhID0gJ1wwJzsKCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoZGF0YVtkYXRhX2xlbmd0aCAtIDFdID09ICdcbicpIHsKICAgICAgICBkYXRhW2RhdGFfbGVuZ3RoIC0gMV0gPSAnXDAnOwoKICAgICAgICBkYXRhID0gcmVhbGxvYyhkYXRhLCBkYXRhX2xlbmd0aCk7CgogICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICBkYXRhID0gJ1wwJzsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGRhdGEgPSByZWFsbG9jKGRhdGEsIGRhdGFfbGVuZ3RoICsgMSk7CgogICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICBkYXRhID0gJ1wwJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkYXRhW2RhdGFfbGVuZ3RoXSA9ICdcMCc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBkYXRhOwp9CgpjaGFyKiBsdHJpbShjaGFyKiBzdHIpIHsKICAgIGlmICghc3RyKSB7CiAgICAgICAgcmV0dXJuICdcMCc7CiAgICB9CgogICAgaWYgKCEqc3RyKSB7CiAgICAgICAgcmV0dXJuIHN0cjsKICAgIH0KCiAgICB3aGlsZSAoKnN0ciAhPSAnXDAnICYmIGlzc3BhY2UoKnN0cikpIHsKICAgICAgICBzdHIrKzsKICAgIH0KCiAgICByZXR1cm4gc3RyOwp9CgpjaGFyKiBydHJpbShjaGFyKiBzdHIpIHsKICAgIGlmICghc3RyKSB7CiAgICAgICAgcmV0dXJuICdcMCc7CiAgICB9CgogICAgaWYgKCEqc3RyKSB7CiAgICAgICAgcmV0dXJuIHN0cjsKICAgIH0KCiAgICBjaGFyKiBlbmQgPSBzdHIgKyBzdHJsZW4oc3RyKSAtIDE7CgogICAgd2hpbGUgKGVuZCA+PSBzdHIgJiYgaXNzcGFjZSgqZW5kKSkgewogICAgICAgIGVuZC0tOwogICAgfQoKICAgICooZW5kICsgMSkgPSAnXDAnOwoKICAgIHJldHVybiBzdHI7Cn0KCmNoYXIqKiBzcGxpdF9zdHJpbmcoY2hhciogc3RyKSB7CiAgICBjaGFyKiogc3BsaXRzID0gTlVMTDsKICAgIGNoYXIqIHRva2VuID0gc3RydG9rKHN0ciwgIiAiKTsKCiAgICBpbnQgc3BhY2VzID0gMDsKCiAgICB3aGlsZSAodG9rZW4pIHsKICAgICAgICBzcGxpdHMgPSByZWFsbG9jKHNwbGl0cywgc2l6ZW9mKGNoYXIqKSAqICsrc3BhY2VzKTsKCiAgICAgICAgaWYgKCFzcGxpdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHNwbGl0czsKICAgICAgICB9CgogICAgICAgIHNwbGl0c1tzcGFjZXMgLSAxXSA9IHRva2VuOwoKICAgICAgICB0b2tlbiA9IHN0cnRvayhOVUxMLCAiICIpOwogICAgfQoKICAgIHJldHVybiBzcGxpdHM7Cn0K