-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path127-extra-element.cpp
More file actions
53 lines (51 loc) · 1.29 KB
/
Copy path127-extra-element.cpp
File metadata and controls
53 lines (51 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
* Extra Element [1185D]
* Problem: https://codeforces.com/problemset/problem/1185/D
* Verdict: ACCEPTED Solved: 2025-03-25
* Language: C++23 (GCC 14-64, msys2)
* Runtime: 264 ms Memory: 7900 KB
* Tags: implementation, math
* Author: BidoTeima
* Source: https://codeforces.com/contest/1185/submission/312332760
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;
cin>>n;
int a[n];
map<int,int>idx;
for(int i = 0; i < n; i++){
cin>>a[i];
idx[a[i]]=i+1;
}
sort(a,a+n);
bool okp[n]{},oks[n]{};
okp[0]=1;
for(int i = 1; i < n; i++){
okp[i]=(i==1?1:a[i]-a[i-1]==a[i-1]-a[i-2])&&okp[i-1];
}
oks[n-1]=1;
for(int i = n - 2; i >= 0; i--){
oks[i]=(i==n-2?1:a[i+1]-a[i]==a[i+2]-a[i+1])&&oks[i+1];
}
if(okp[n-2]){
cout<<idx[a[n-1]];
return 0;
}
if(oks[1]){
cout<<idx[a[0]];
return 0;
}
for(int i = 1; i + 1 < n; i++){
if(okp[i - 1] && oks[i + 1] && (i==1?1:a[i + 1] - a[i - 1] == a[i-1]-a[i-2]) && (i==n-2 ? 1 : a[i + 1] - a[i - 1] == a[i + 2] - a[i + 1] ) ){
cout<<idx[a[i]];
return 0;
}
}
cout<<-1;
return 0;
}