1208B. Uniqueness - Codeforces Solution C++

  Problem Link : 1208B. Uniqueness 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;

#define ll long long int

int main()
{
	int n;
	cin>>n;
	vector<ll> v;
	ll u;
	for(int i=0;i<n;i++)
	{
		cin>>u;
		v.push_back(u);
	}
	unordered_map<ll,int> um;
	int ans=0;
	bool flag=0;
	for(int i=n-1;i>=0;i--)
	{
		if(um.find(v[i])==um.end())
		{
			um[v[i]]=i;
			if(!flag)
				ans++;
		}
		else
			flag=1;
	}
	ans=n-ans;
	int rt=ans-1;
//	cout<<rt<<" "<<ans<<endl;
	int iv;
	unordered_set<ll> vis;
	int mx=-1;
	for(int i=0;i<n && vis.find(v[i])==vis.end();i++)
	{
	    vis.insert(v[i]);
		iv=um[v[i]];
		iv=max(iv,rt);
		mx=max(mx,iv);
		iv=max(iv,mx);
	//	cout<<i<<" "<<iv<<" "<<endl;
		if(iv>i)
		ans=min(ans,iv-i);
	}

	cout<<ans;
	
	
}

 

Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook. 

😇Happy Learning!!