Maruf_Hasan

jeff and periods

Apr 1st, 2019
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define M 100100
  4. int diff[M];
  5. vector<int>adj[M];
  6. bool mark[M];
  7. vector<int>bal[M];
  8. int main()
  9. {
  10. int n,i;
  11. cin>>n;
  12. int a[n+5];
  13. set<int>st;
  14. set<int> :: iterator it;
  15. for(i=0;i<n;i++)
  16. {
  17. cin>>a[i];
  18. st.insert(a[i]);
  19. }
  20. vector<int>v;
  21. for(it=st.begin();it!=st.end();it++)
  22. {
  23. v.push_back(*it);
  24. }
  25. for(i=0;i<n;i++)
  26. {
  27. adj[a[i]].push_back(i);
  28. }
  29. // for(i=0;i<v.size();i++)
  30. // {
  31. // sort(adj[v[i]].begin(),adj[v[i]].end());
  32. // }
  33. vector<pair<int,int> >ans;
  34. for(i=0;i<v.size();i++)
  35. {
  36. int x=v[i];
  37. //cout<<x<<endl;
  38. if(adj[x].size()==1)
  39. {
  40. ans.push_back(make_pair(x,0));
  41. mark[x]=true;
  42. }
  43. else
  44. {
  45.  
  46. for(int j=0;j<adj[x].size()-1;j++)
  47. {
  48. bal[x].push_back(adj[x][j+1]-adj[x][j]);
  49. }
  50. }
  51. }
  52. for(i=0;i<v.size();i++)
  53. {
  54. int x=v[i];
  55. if(mark[x]==false)
  56. {
  57. int prime=0;
  58. for(int j=0;j<bal[x].size()-1;j++)
  59. {
  60. int y=bal[x][j];
  61. int z=bal[x][j+1];
  62. if(y!=z)
  63. {
  64. prime=1;
  65. }
  66. }
  67. if(prime==0)
  68. {
  69. ans.push_back(make_pair(x,bal[x][0]));
  70. }
  71. }
  72. }
  73.  
  74. sort(ans.begin(),ans.end());
  75. cout<<ans.size()<<endl;
  76. for(i=0;i<ans.size();i++)
  77. {
  78. cout<<ans[i].first<<" "<<ans[i].second<<endl;
  79. }
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment