fork download
  1. #include <bits/stdc++.h>
  2. #include <string>
  3. using namespace std;
  4. #define ll long long
  5. #define dd double
  6. #define ld long double
  7. #define pi 3.14159265359
  8. #define ull unsigned long long
  9. #define yes cout<<"YES\n"
  10. #define no cout<<"NO\n"
  11. #define el "\n"
  12. #define Arwa ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  13. #define fix(x) cout<<fixed<<setprecision(x)
  14. ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);}
  15. ll lcm(int a,int b) {return a/gcd(a,b)*b;}
  16. //here we go again
  17. int main()
  18. {
  19. Arwa
  20. int t=1;
  21. //cin>>t;
  22. while(t--)
  23. {
  24. int n;
  25. cin>>n;
  26. int arr[n];
  27. for(int i=0;i<n;i++)
  28. cin>>arr[i];
  29. int a,b,c,d,e,f,g,h,j,ca=0,cb=0,cc=0,cd=0,ce=0,cf=0,cg=0,ch=0,cj=0;
  30. a=arr[1]-arr[0];
  31. b=arr[1]+1-arr[0];
  32. c=arr[1]-1-arr[0];
  33. d=arr[1]-(arr[0]+1);
  34. e=arr[1]+1-(arr[0]+1);
  35. f=arr[1]-1-(arr[0]+1);
  36. g=arr[1]+1-(arr[0]-1);
  37. h=arr[1]-(arr[0]-1);
  38. j=arr[1]-1-(arr[0]-1);
  39. //cout<<a<<' '<<b<<' '<<c<<' '<<d<<' '<<e<<' '<<f<<' '<<g<<' '<<h<<el;
  40. int xa=arr[1],xb=arr[1]+1,xc=arr[1]-1,xd=arr[1],xe=arr[1]+1,xf=arr[1]-1,xg=arr[1]+1,xh=arr[1],xj=arr[1]-1;
  41. for(int i=2;i<n;i++)
  42. {
  43. if(ca!=-1)
  44. {
  45. if(arr[i]-xa==a)
  46. xa=arr[i];
  47. else if(arr[i]-xa<=0&&arr[i]+1-xa==a)
  48. {
  49. xa=arr[i]+1;
  50. ca++;
  51. }
  52. else if(arr[i]-xa<=0&&arr[i]-1-xa==a)
  53. {
  54. xa=arr[i]-1;
  55. ca++;
  56. }
  57. else if(arr[i]-xa>0&&arr[i]+1-xa==a)
  58. {
  59. xa=arr[i]+1;
  60. ca++;
  61. }
  62. else if(arr[i]-xa<0&&arr[i]-1-xa==a)
  63. {
  64. xa=arr[i]-1;
  65. ca++;
  66. }
  67. else ca=-1;
  68. }
  69. ////////////////////////////////////////
  70. if(cb!=-1)
  71. {
  72. if(arr[i]-xb==b)
  73. xb=arr[i];
  74. else if(arr[i]-xb<=0&&arr[i]+1-xb==b)
  75. {
  76. xb=arr[i]+1;
  77. cb++;
  78. }
  79. else if(arr[i]-xb<=0&&arr[i]-1-xb==b)
  80. {
  81. xb=arr[i]-1;
  82. cb++;
  83. }
  84. else if(arr[i]-xb>0&&arr[i]+1-xb==b)
  85. {
  86. xb=arr[i]+1;
  87. cb++;
  88. }
  89. else if(arr[i]-xb<0&&arr[i]-1-xb==b)
  90. {
  91. xb=arr[i]-1;
  92. cb++;
  93. }
  94. else cb=-1;
  95. }
  96. ////////////////////////////////////////
  97. if(cc!=-1)
  98. {
  99. if(arr[i]-xc==c)
  100. xc=arr[i];
  101. else if(arr[i]-xc<=0&&arr[i]+1-xc==c)
  102. {
  103. xc=arr[i]+1;
  104. cc++;
  105. }
  106. else if(arr[i]-xc<=0&&arr[i]-1-xc==c)
  107. {
  108. xc=arr[i]-1;
  109. cc++;
  110. }
  111. else if(arr[i]-xc>0&&arr[i]+1-xc==c)
  112. {
  113. xc=arr[i]+1;
  114. cc++;
  115. }
  116. else if(arr[i]-xc<0&&arr[i]-1-xc==c)
  117. {
  118. xc=arr[i]-1;
  119. cc++;
  120. }
  121. else cc=-1;
  122. }
  123. ////////////////////////////////////////
  124. if(cd!=-1)
  125. {
  126. if(arr[i]-xd==d)
  127. xd=arr[i];
  128. else if(arr[i]-xd<=0&&arr[i]+1-xd==d)
  129. {
  130. xd=arr[i]+1;
  131. cd++;
  132. }
  133. else if(arr[i]-xd<=0&&arr[i]-1-xd==d)
  134. {
  135. xd=arr[i]-1;
  136. cd++;
  137. }
  138. else if(arr[i]-xd>0&&arr[i]+1-xd==d)
  139. {
  140. xd=arr[i]+1;
  141. cd++;
  142. }
  143. else if(arr[i]-xd<0&&arr[i]-1-xd==d)
  144. {
  145. xd=arr[i]-1;
  146. cd++;
  147. }
  148. else cd=-1;
  149. }
  150. /////////////////////////////////////////
  151. if(ce!=-1)
  152. {
  153. if(arr[i]-xe==e)
  154. xe=arr[i];
  155. else if(arr[i]-xe<=0&&arr[i]+1-xe==e)
  156. {
  157. xe=arr[i]+1;
  158. ce++;
  159. }
  160. else if(arr[i]-xe<=0&&arr[i]-1-xe==e)
  161. {
  162. xe=arr[i]-1;
  163. ce++;
  164. }
  165. else if(arr[i]-xe>0&&arr[i]+1-xe==e)
  166. {
  167. xe=arr[i]+1;
  168. ce++;
  169. }
  170. else if(arr[i]-xe<0&&arr[i]-1-xe==e)
  171. {
  172. xe=arr[i]-1;
  173. ce++;
  174. }
  175. else ce=-1;
  176. }
  177. //////////////////////////////////////////
  178. if(cf!=-1)
  179. {
  180. if(arr[i]-xf==f)
  181. xf=arr[i];
  182. else if(arr[i]-xf<=0&&arr[i]+1-xf==f)
  183. {
  184. xf=arr[i]+1;
  185. cf++;
  186. }
  187. else if(arr[i]-xf<=0&&arr[i]-1-xf==f)
  188. {
  189. xf=arr[i]-1;
  190. cf++;
  191. }
  192. else if(arr[i]-xf>0&&arr[i]+1-xf==f)
  193. {
  194. xf=arr[i]+1;
  195. cf++;
  196. }
  197. else if(arr[i]-xf<0&&arr[i]-1-xf==f)
  198. {
  199. xf=arr[i]-1;
  200. cf++;
  201. }
  202. else cf=-1;
  203. }
  204. ////////////////////////////////////////
  205. if(cg!=-1)
  206. {
  207. if(arr[i]-xg==g)
  208. xg=arr[i];
  209. else if(arr[i]-xg<=0&&arr[i]+1-xg==g)
  210. {
  211. xg=arr[i]+1;
  212. cg++;
  213. }
  214. else if(arr[i]-xg<=0&&arr[i]-1-xg==g)
  215. {
  216. xg=arr[i]-1;
  217. cg++;
  218. }
  219. else if(arr[i]-xg>0&&arr[i]+1-xg==g)
  220. {
  221. xg=arr[i]+1;
  222. cg++;
  223. }
  224. else if(arr[i]-xg<0&&arr[i]-1-xg==g)
  225. {
  226. xg=arr[i]-1;
  227. cg++;
  228. }
  229. else cg=-1;
  230. }
  231. ////////////////////////////////////////
  232. if(ch!=-1)
  233. {
  234. if(arr[i]-xh==h)
  235. xh=arr[i];
  236. else if(arr[i]-xh<=0&&arr[i]+1-xh==h)
  237. {
  238. xh=arr[i]+1;
  239. ch++;
  240. }
  241. else if(arr[i]-xh<=0&&arr[i]-1-xh==h)
  242. {
  243. xh=arr[i]-1;
  244. ch++;
  245. }
  246. else if(arr[i]-xh>0&&arr[i]+1-xh==h)
  247. {
  248. xh=arr[i]+1;
  249. ch++;
  250. }
  251. else if(arr[i]-xh<0&&arr[i]-1-xh==h)
  252. {
  253. xh=arr[i]-1;
  254. ch++;
  255. }
  256. else ch=-1;
  257. }
  258. ////////////////////////////////////////
  259. if(cj!=-1)
  260. {
  261. if(arr[i]-xj==j)
  262. xj=arr[i];
  263. else if(arr[i]-xj<=0&&arr[i]+1-xj==j)
  264. {
  265. xj=arr[i]+1;
  266. cj++;
  267. }
  268. else if(arr[i]-xj<=0&&arr[i]-1-xj==j)
  269. {
  270. xj=arr[i]-1;
  271. cj++;
  272. }
  273. else if(arr[i]-xj>0&&arr[i]+1-xj==j)
  274. {
  275. xj=arr[i]+1;
  276. cj++;
  277. }
  278. else if(arr[i]-xj<0&&arr[i]-1-xj==j)
  279. {
  280. xj=arr[i]-1;
  281. cj++;
  282. }
  283. else cj=-1;
  284. }
  285. ////////////////////////////////////////
  286. }
  287. if(cb!=-1) cb++;
  288. if(cc!=-1) cc++;
  289. if(cd!=-1) cd++;
  290. if(ch!=-1) ch++;
  291. if(ce!=-1) ce+=2;
  292. if(cf!=-1) cf+=2;
  293. if(cg!=-1) cg+=2;
  294. if(cj!=-1) cj+=2;
  295. ll min=1e9+1;
  296. //cout<<ca<<' '<<cb<<' '<<cc<<' '<<cd<<' '<<ce<<' '<<cf<<' '<<cg<<' '<<ch<<' '<<cj<<el;
  297. if(ca!=-1&&min>ca) min=ca;
  298. if(cb!=-1&&min>cb) min=cb;
  299. if(cc!=-1&&min>cc) min=cc;
  300. if(cd!=-1&&min>cd) min=cd;
  301. if(ce!=-1&&min>ce) min=ce;
  302. if(cf!=-1&&min>cf) min=cf;
  303. if(cg!=-1&&min>cg) min=cg;
  304. if(ch!=-1&&min>ch) min=ch;
  305. if(cj!=-1&&min>cj) min=cj;
  306. if(min==1e9+1)
  307. cout<<-1<<el;
  308. else
  309. cout<<min<<el;
  310. }
  311. return 0;
  312. }
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
-1