#include<bits/stdc++.h>
using namespace std;
void findMaxSubArray(int A[], int n)
{
int len = 1;
int start = 0, end = 0;
set<int> dup_catcher;
for (int i = 0; i < n - 1; i++)
{
dup_catcher.clear();
dup_catcher.insert(A[i]);
int min_val = A[i], max_val = A[i];
for (int j = i + 1; j < n; j++)
{
min_val = min(min_val, A[j]);
max_val = max(max_val, A[j]);
//dup_catcher.insert(A[j]);
bool isDuplicate =dup_catcher.insert(A[j]).second;
if( isDuplicate &&(max_val - min_val == j - i))
{
if (len < max_val - min_val + 1)
{ len = max_val - min_val + 1;
start = i, end = j;
}
}
else if(!isDuplicate )
break;
else
{
continue;
}
}
}
cout << "The largest sub-array is [" << start << ", " << end << "]";
}
int main()
{
int A[] = { 2, 0, 2, 1, 4, 3, 1, 0 };
int n = sizeof(A) / sizeof(A[0]);
findMaxSubArray(A, n);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgZmluZE1heFN1YkFycmF5KGludCBBW10sIGludCBuKQp7CiAgICBpbnQgbGVuID0gMTsKICAgIGludCBzdGFydCA9IDAsIGVuZCA9IDA7CglzZXQ8aW50PiBkdXBfY2F0Y2hlcjsKCQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKQogICAgewoJCWR1cF9jYXRjaGVyLmNsZWFyKCk7CiAgICAgICAgZHVwX2NhdGNoZXIuaW5zZXJ0KEFbaV0pOwogICAgICAgIGludCBtaW5fdmFsID0gQVtpXSwgbWF4X3ZhbCA9IEFbaV07CiAKICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPCBuOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBtaW5fdmFsID0gbWluKG1pbl92YWwsIEFbal0pOwogICAgICAgICAgICBtYXhfdmFsID0gbWF4KG1heF92YWwsIEFbal0pOwogICAgICAgICAgICAvL2R1cF9jYXRjaGVyLmluc2VydChBW2pdKTsKICAgICAgICAgICAgYm9vbCBpc0R1cGxpY2F0ZSA9ZHVwX2NhdGNoZXIuaW5zZXJ0KEFbal0pLnNlY29uZDsKICAgICAgICAgICAgaWYoIGlzRHVwbGljYXRlICYmKG1heF92YWwgLSBtaW5fdmFsID09IGogLSBpKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBpZiAobGVuIDwgbWF4X3ZhbCAtIG1pbl92YWwgKyAxKQogICAgICAgICAgICAgICAgICAgIHsgICAgbGVuID0gbWF4X3ZhbCAtIG1pbl92YWwgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBpLCBlbmQgPSBqOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCFpc0R1cGxpY2F0ZSApCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgIlRoZSBsYXJnZXN0IHN1Yi1hcnJheSBpcyBbIiA8PCBzdGFydCA8PCAiLCAiIDw8IGVuZCA8PCAiXSI7Cn0KIAppbnQgbWFpbigpCnsKCWludCBBW10gPSB7IDIsIDAsIDIsIDEsIDQsIDMsIDEsIDAgfTsKICAgIGludCBuID0gc2l6ZW9mKEEpIC8gc2l6ZW9mKEFbMF0pOwogCiAgICBmaW5kTWF4U3ViQXJyYXkoQSwgbik7CiAKICAgIHJldHVybiAwOwp9