➤ Problem Link : 28B. pSort
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int par[101]; int find(int v) { if(par[v]==v) return v; return par[v]=find(par[v]); } int main() { int n; cin>>n; int arr[n+1],fav[n+1]; for(int i=1;i<=n;i++) par[i]=i; for(int i=1;i<=n;i++) cin>>arr[i]; int p1,p2; for(int i=1;i<=n;i++) { cin>>fav[i]; if(i+fav[i]<=n) { p1=find(i); p2=find(i+fav[i]); if(p1!=p2) par[p2]=p1; } if(i-fav[i]>0) { p1=find(i); p2=find(i-fav[i]); if(p1!=p2) par[p2]=p1; } } for(int i=1;i<=n;i++) { p1=find(i); p2=find(arr[i]); if(p1!=p2) { cout<<"NO"; exit(0); } } cout<<"YES"; }
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!!