Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define M 100100
- int diff[M];
- vector<int>adj[M];
- bool mark[M];
- vector<int>bal[M];
- int main()
- {
- int n,i;
- cin>>n;
- int a[n+5];
- set<int>st;
- set<int> :: iterator it;
- for(i=0;i<n;i++)
- {
- cin>>a[i];
- st.insert(a[i]);
- }
- vector<int>v;
- for(it=st.begin();it!=st.end();it++)
- {
- v.push_back(*it);
- }
- for(i=0;i<n;i++)
- {
- adj[a[i]].push_back(i);
- }
- // for(i=0;i<v.size();i++)
- // {
- // sort(adj[v[i]].begin(),adj[v[i]].end());
- // }
- vector<pair<int,int> >ans;
- for(i=0;i<v.size();i++)
- {
- int x=v[i];
- //cout<<x<<endl;
- if(adj[x].size()==1)
- {
- ans.push_back(make_pair(x,0));
- mark[x]=true;
- }
- else
- {
- for(int j=0;j<adj[x].size()-1;j++)
- {
- bal[x].push_back(adj[x][j+1]-adj[x][j]);
- }
- }
- }
- for(i=0;i<v.size();i++)
- {
- int x=v[i];
- if(mark[x]==false)
- {
- int prime=0;
- for(int j=0;j<bal[x].size()-1;j++)
- {
- int y=bal[x][j];
- int z=bal[x][j+1];
- if(y!=z)
- {
- prime=1;
- }
- }
- if(prime==0)
- {
- ans.push_back(make_pair(x,bal[x][0]));
- }
- }
- }
- sort(ans.begin(),ans.end());
- cout<<ans.size()<<endl;
- for(i=0;i<ans.size();i++)
- {
- cout<<ans[i].first<<" "<<ans[i].second<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment