#include <iostream>
using namespace std;
// The function returns true if there exist three elements in AP
// Assumption: set[0..n-1] is sorted
bool arithmeticThree(int set[], int n)
{
// One by fix every element as middle element
for (int j=1; j<n-1; j++)
{
// Initialize i and k for the current j
int i = j-1, k = j+1;
// Find if there exist i and k that form AP
// with j as middle element
while (i >= 0 && k <= n-1)
{
if (set[i] + set[k] == 2*set[j])
return true;
(set[i] + set[k] < 2*set[j])? k++ : i--;
}
}
return false;
}
/* Drier program to test above function*/
int main()
{
int set1[] = {1, 7, 10, 15, 27, 29};
int n1 = sizeof(set1)/sizeof(set1[0]);
arithmeticThree(set1, n1)? cout << "Yes\n" : cout << "No\n";
int set2[] = {1, 7, 10, 15, 27, 28};
int n2 = sizeof(set2)/sizeof(set2[0]);
arithmeticThree(set2, n2)? cout << "Yes\n" : cout << "No\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBleGlzdCB0aHJlZSBlbGVtZW50cyBpbiBBUAovLyBBc3N1bXB0aW9uOiBzZXRbMC4ubi0xXSBpcyBzb3J0ZWQKYm9vbCBhcml0aG1ldGljVGhyZWUoaW50IHNldFtdLCBpbnQgbikKewogICAgLy8gT25lIGJ5IGZpeCBldmVyeSBlbGVtZW50IGFzIG1pZGRsZSBlbGVtZW50CiAgICBmb3IgKGludCBqPTE7IGo8bi0xOyBqKyspCiAgICB7CiAgICAgICAgLy8gSW5pdGlhbGl6ZSBpIGFuZCBrIGZvciB0aGUgY3VycmVudCBqCiAgICAgICAgaW50IGkgPSBqLTEsIGsgPSBqKzE7CgogICAgICAgIC8vIEZpbmQgaWYgdGhlcmUgZXhpc3QgaSBhbmQgayB0aGF0IGZvcm0gQVAKICAgICAgICAvLyB3aXRoIGogYXMgbWlkZGxlIGVsZW1lbnQKICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGsgPD0gbi0xKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHNldFtpXSArIHNldFtrXSA9PSAyKnNldFtqXSkKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAoc2V0W2ldICsgc2V0W2tdIDwgMipzZXRbal0pPyBrKysgOiBpLS07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKfQoKLyogRHJpZXIgcHJvZ3JhbSB0byB0ZXN0IGFib3ZlIGZ1bmN0aW9uKi8KaW50IG1haW4oKQp7CiAgICBpbnQgc2V0MVtdID0gezEsIDcsIDEwLCAxNSwgMjcsIDI5fTsKICAgIGludCBuMSA9IHNpemVvZihzZXQxKS9zaXplb2Yoc2V0MVswXSk7CiAgICBhcml0aG1ldGljVGhyZWUoc2V0MSwgbjEpPyBjb3V0IDw8ICJZZXNcbiIgOiBjb3V0IDw8ICJOb1xuIjsKCiAgICBpbnQgc2V0MltdID0gezEsIDcsIDEwLCAxNSwgMjcsIDI4fTsKICAgIGludCBuMiA9IHNpemVvZihzZXQyKS9zaXplb2Yoc2V0MlswXSk7CiAgICBhcml0aG1ldGljVGhyZWUoc2V0MiwgbjIpPyBjb3V0IDw8ICJZZXNcbiIgOiBjb3V0IDw8ICJOb1xuIjsKICAgIHJldHVybiAwOwp9Cg==