#include <stdio.h>
typedef enum
{
sortUnknown = 0,
sortAscending,
sortDescending,
sortUnsorted
} SortType;
const char *sortNames[] =
{
" Unknown",
" Ascending",
"Descending",
" Unsorted",
};
SortType is_sorted(int* arr, int size)
{
if (size <= 1)
{
return sortUnknown;
}
SortType overallSortType = sortUnknown;
for (int i = 0; i < size - 1; ++i)
{
if (arr[i] < arr[i + 1])
{
if (overallSortType == sortDescending)
{
return sortUnsorted;
}
overallSortType = sortAscending;
}
else if (arr[i] > arr[i + 1])
{
if (overallSortType == sortAscending)
{
return sortUnsorted;
}
overallSortType = sortDescending;
}
}
return overallSortType;
}
void print(int *arr, int size, SortType st)
{
printf("%s : ", sortNames
[st
]); for (int i = 0; i < size; ++i)
{
}
}
int main()
{
int arr1[] = { 1, 1, 2 };
SortType st = is_sorted(arr1, 3);
print(arr1, 3, st);
int arr2[] = { 2, 1, -1 };
st = is_sorted(arr2, 3);
print(arr2, 3, st);
int arr3[] = { 4, 7, 0, 3 };
st = is_sorted(arr3, 4);
print(arr3, 4, st);
int arr4[] = { 3 };
st = is_sorted(arr4, 1);
print(arr4, 1, st);
int arr5[] = { 1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 6, 7, 8, 9 };
st = is_sorted(arr5, 17);
print(arr5, 17, st);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIGVudW0KewogICAgc29ydFVua25vd24gPSAwLAogICAgc29ydEFzY2VuZGluZywKICAgIHNvcnREZXNjZW5kaW5nLAogICAgc29ydFVuc29ydGVkCn0gU29ydFR5cGU7Cgpjb25zdCBjaGFyICpzb3J0TmFtZXNbXSA9CnsKICAgICIgICBVbmtub3duIiwKICAgICIgQXNjZW5kaW5nIiwKICAgICJEZXNjZW5kaW5nIiwKICAgICIgIFVuc29ydGVkIiwKfTsKClNvcnRUeXBlIGlzX3NvcnRlZChpbnQqIGFyciwgaW50IHNpemUpCnsKICAgIGlmIChzaXplIDw9IDEpCiAgICB7CiAgICAgICAgcmV0dXJuIHNvcnRVbmtub3duOwogICAgfQoKICAgIFNvcnRUeXBlIG92ZXJhbGxTb3J0VHlwZSA9IHNvcnRVbmtub3duOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplIC0gMTsgKytpKQogICAgewogICAgICAgIGlmIChhcnJbaV0gPCBhcnJbaSArIDFdKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG92ZXJhbGxTb3J0VHlwZSA9PSBzb3J0RGVzY2VuZGluZykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRVbnNvcnRlZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBvdmVyYWxsU29ydFR5cGUgPSBzb3J0QXNjZW5kaW5nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChhcnJbaV0gPiBhcnJbaSArIDFdKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG92ZXJhbGxTb3J0VHlwZSA9PSBzb3J0QXNjZW5kaW5nKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gc29ydFVuc29ydGVkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG92ZXJhbGxTb3J0VHlwZSA9IHNvcnREZXNjZW5kaW5nOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBvdmVyYWxsU29ydFR5cGU7Cn0KCnZvaWQgcHJpbnQoaW50ICphcnIsIGludCBzaXplLCBTb3J0VHlwZSBzdCkKewogICAgcHJpbnRmKCIlcyA6ICIsIHNvcnROYW1lc1tzdF0pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZCAiLCBhcnJbaV0pOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBhcnIxW10gPSB7IDEsIDEsIDIgfTsKICAgIFNvcnRUeXBlIHN0ID0gaXNfc29ydGVkKGFycjEsIDMpOwogICAgcHJpbnQoYXJyMSwgMywgc3QpOwoKICAgIGludCBhcnIyW10gPSB7IDIsIDEsIC0xIH07CiAgICBzdCA9IGlzX3NvcnRlZChhcnIyLCAzKTsKICAgIHByaW50KGFycjIsIDMsIHN0KTsKCiAgICBpbnQgYXJyM1tdID0geyA0LCA3LCAwLCAzIH07CiAgICBzdCA9IGlzX3NvcnRlZChhcnIzLCA0KTsKICAgIHByaW50KGFycjMsIDQsIHN0KTsKCiAgICBpbnQgYXJyNFtdID0geyAzIH07CiAgICBzdCA9IGlzX3NvcnRlZChhcnI0LCAxKTsKICAgIHByaW50KGFycjQsIDEsIHN0KTsKCiAgICBpbnQgYXJyNVtdID0geyAxLCAxLCAxLCAxLCAyLCAyLCAyLCAzLCA0LCA1LCA2LCA2LCA2LCA2LCA3LCA4LCA5IH07CiAgICBzdCA9IGlzX3NvcnRlZChhcnI1LCAxNyk7CiAgICBwcmludChhcnI1LCAxNywgc3QpOwoKICAgIHJldHVybiAwOwp9Cg==