fork download
  1. #include<bits/stdc++.h>;
  2. #define pa pair<long long,long long>
  3. #define fi first
  4. #define ll long long
  5. #define se second
  6. using namespace std;
  7. const long long M=1000000007;
  8. int x;
  9. vector<int> v;
  10. set<vector<int>> sx;
  11. long long kt(vector<int> v)
  12. {
  13. for(auto i:v) if(i!=0) return 0;
  14. return 1;
  15. }
  16. long long tinh()
  17. {
  18. deque<pair<vector<int>,int>> dx;
  19. dx.push_back({v,0});
  20. sx.insert(v);
  21. while(dx.empty()!=1)
  22. {
  23. vector<int> v1=dx.front().first;
  24. int so=dx.front().second;
  25. dx.pop_front();
  26. vector<int> v2=v1;
  27. for(long long i=0;i<=v1.size()-4;++i)
  28. {
  29. v2[i]=abs(v1[i]-v1[i+1]);
  30. v2[i+1]=abs(v1[i+1]-v1[i+2]);
  31. v2[i+2]=abs(v1[i+2]-v1[i+3]);
  32. v2[i+3]=abs(v1[i+3]-v1[i]);
  33. if(kt(v2)==1) return so+1;
  34. if(sx.count(v2)==false)
  35. {
  36. sx.insert(v2);
  37. dx.push_back({v2,so+1});
  38. }
  39. v2[i]=v1[i];
  40. v2[i+1]=v1[i+1];
  41. v2[i+2]=v1[i+2];
  42. v2[i+3]=v1[i+3];
  43. }
  44. }
  45. return 0;
  46. }
  47. int main()
  48. {
  49. ios_base::sync_with_stdio(0);
  50. cin.tie(0);
  51. cout.tie(0);
  52. //freopen("BAI05.inp","r",stdin);
  53. // freopen("BAI05.out","w",stdout);
  54. while(cin >>x)
  55. v.push_back(x);
  56.  
  57. cout <<tinh();
  58. }
  59.  
Success #stdin #stdout 0s 5320KB
stdin
0
1
2
3
4
stdout
5