fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define dd double
  5. #define ld long double
  6. #define pi 3.14159265359
  7. #define ull unsigned long long
  8. #define yes cout<<"YES\n"
  9. #define no cout<<"NO\n"
  10. #define el "\n"
  11. #define Arwa ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  12. #define fix(x) cout<<fixed<<setprecision(x)
  13. ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);}
  14. ll lcm(int a,int b) {return a/gcd(a,b)*b;}
  15. bool prime(ll n)
  16. {
  17. if(n==2) return true;
  18. if(n%2==0||n==1) return false;
  19. else { for(ll i=3; i*i<=n; i+=2) {if(n%i==0) return false;}}return true;
  20. }
  21. //here we go again
  22. int main()
  23. {
  24. Arwa
  25. int t=1;
  26. //cin>>t;
  27. while(t--)
  28. {
  29. int n;
  30. cin>>n;
  31. int arr[n],fake1[n],fake2[n],fake3[n],fake4[n],fake5[n],c1=0,c2=0,c3=0,c4=0,c5=0;
  32. bool f1=1,f2=1,f3=1,f4=1,f5=1;
  33. for(int i=0;i<n;i++)
  34. cin>>arr[i];
  35. for(int i=0;i<n;i++)
  36. {
  37. fake1[i]=arr[i];
  38. fake2[i]=arr[i];
  39. fake3[i]=arr[i];
  40. fake4[i]=arr[i];
  41. fake5[i]=arr[i];
  42. }
  43. int a=abs(fake1[1]-fake1[0]);
  44. for(int i=2;i<n;i++)
  45. {
  46. if(abs(fake1[i]-fake1[i-1])-a==1)
  47. {
  48. fake1[i]++;
  49. c1++;
  50. }
  51. else if(abs(fake1[i]-fake1[i-1])-a==-1)
  52. {
  53. fake1[i]--;
  54. c1++;
  55. }
  56. else if(abs(fake1[i]-fake1[i-1])-a==0)
  57. continue;
  58. else
  59. {
  60. f1=0;
  61. c1=0;
  62. break;
  63. }
  64. }
  65. int b=abs(fake2[1]-fake2[0])-1;
  66. if(fake2[1]<=fake2[0])
  67. fake2[1]++;
  68. else
  69. fake2[0]++;
  70. c2++;
  71. for(int i=2;i<n;i++)
  72. {
  73. if(abs(fake2[i]-fake2[i-1])-b==1)
  74. {
  75. fake2[i]++;
  76. c2++;
  77. }
  78. else if(abs(fake2[i]-fake2[i-1])-b==-1)
  79. {
  80. fake2[i]--;
  81. c2++;
  82. }
  83. else if(abs(fake2[i]-fake2[i-1])-b==0)
  84. continue;
  85. else
  86. {
  87. f2=0;
  88. c2=0;
  89. break;
  90. }
  91. }
  92. int d=abs(fake3[1]-fake3[0])-2;
  93. if(fake3[1]<=fake3[0])
  94. {
  95. fake3[1]++;
  96. fake3[0]--;
  97. }
  98. else
  99. {
  100. fake3[0]++;
  101. fake3[1]--;
  102. }
  103. c3+=2;
  104. for(int i=2;i<n;i++)
  105. {
  106. if(abs(fake3[i]-fake3[i-1])-d==1)
  107. {
  108. fake3[i]++;
  109. c3++;
  110. }
  111. else if(abs(fake3[i]-fake3[i-1])-d==-1)
  112. {
  113. fake3[i]--;
  114. c3++;
  115. }
  116. else if(abs(fake3[i]-fake3[i-1])-d==0)
  117. continue;
  118. else
  119. {
  120. f3=0;
  121. c3=0;
  122. break;
  123. }
  124. }
  125. int e=abs(fake4[1]-fake4[0])+1;
  126. if(fake4[1]<=fake4[0])
  127. fake4[1]--;
  128. else
  129. fake4[0]--;
  130. c4++;
  131. for(int i=2;i<n;i++)
  132. {
  133. if(abs(fake4[i]-fake4[i-1])-e==1)
  134. {
  135. fake4[i]++;
  136. c4++;
  137. }
  138. else if(abs(fake4[i]-fake4[i-1])-e==-1)
  139. {
  140. fake4[i]--;
  141. c4++;
  142. }
  143. else if(abs(fake4[i]-fake4[i-1])-e==0)
  144. continue;
  145. else
  146. {
  147. f4=0;
  148. c4=0;
  149. break;
  150. }
  151. }
  152. int f=abs(fake5[1]-fake5[0])+2;
  153. if(fake5[1]<=fake5[0])
  154. {
  155. fake5[1]--;
  156. fake5[0]++;
  157. }
  158. else
  159. {
  160. fake5[0]--;
  161. fake5[1]++;
  162. }
  163. c5+=2;
  164. for(int i=2;i<n;i++)
  165. {
  166. if(abs(fake5[i]-fake5[i-1])-f==1)
  167. {
  168. fake5[i]++;
  169. c5++;
  170. }
  171. else if(abs(fake5[i]-fake5[i-1])-f==-1)
  172. {
  173. fake5[i]--;
  174. c5++;
  175. }
  176. else if(abs(fake5[i]-fake5[i-1])-f==0)
  177. continue;
  178. else
  179. {
  180. f5=0;
  181. c5=0;
  182. break;
  183. }
  184. }
  185. int min=n;
  186. if(f1)
  187. {
  188. if(min>c1) min=c1;
  189. }
  190. if(f2)
  191. {
  192. if(min>c2) min=c2;
  193. }
  194. if(f3)
  195. {
  196. if(min>c3) min=c3;
  197. }
  198. if(f4)
  199. {
  200. if(min>c4) min=c4;
  201. }
  202. if(f5)
  203. {
  204. if(min>c5) min=c5;
  205. }
  206. if(min==n)
  207. cout<<-1<<el;
  208. else cout<<min<<el;
  209. }
  210. return 0;
  211. }
  212. // 24 21 14 10
  213. // 3
  214. // 2
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
-1