DS eLab - all programs SESSION : Searching SER1 #include <stdio.h> int main() { int n,a[10],i; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); int s; scanf("%d",&s); for(i=0; i<n; i++) { if(a[i]==s) { printf("%d found at location %d",s,i+1); break; } } if(i==n) printf("Not found %d is not present in the list",s); return 0; } SER2 #include <stdio.h> int main() { int a[5],i,j,k; for(i=0; i<5; i++) scanf("%d",&a[i]); for(i=0; i<5; i++) for(j=i+1; j<5; j++) for(k=j+1; k<5; k++) if(a[i]+a[j]+a[k]==0) printf("%d %d %d\n",a[i],a[j],a[k]); return 0; } SER4 #include <stdio.h> int main() { int n,a[10],i; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); int s; scanf("%d",&s); for(i=0; i<n; i++) { if(a[i]==s) { printf("%d",i); break; } } if(i==n) printf("-1"); return 0; } SER5 (two questions with same name) #include<stdio.h> void printSums(int N) { int i,j,k,sum; for(i=1; i<=N; i++) for(j=i+1; j<=N; j++) { sum=(j-i+1)*(i+j)/2; if(sum==N) { for(k=i; k<=j; k++) printf("%d ",k); printf("\n"); } } } int main() { int N; scanf("%d",&N); printSums(N); return 0; } SER5 (two questions with same name) #include <stdio.h> void thirdLargest(int arr[],int arr_size) { int i,j,t; for(i=0; i<arr_size; i++) for(j=i+1; j<arr_size; j++) if(arr[i]<arr[j]) { t=arr[i]; arr[i]=arr[j]; arr[j]=t; } printf("The third Largest element is %d",arr[2]); } int main() { int n,a[20],i; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); thirdLargest(a,n); return 0; } SER6 #include<iostream> using namespace std; void findClosest(int A[], int B[], int C[], int p, int q, int r) { int diff=1000; int res_i=0,res_j=0,res_k=0; int i=0,j=0,k=0; while(i<p && j<q && k<r) { int minimum=min(A[i], min(B[j], C[k])); int maximum=max(A[i], max(B[j], C[k])); if(maximum-minimum<diff) { res_i=i, res_j=j, res_k=k; diff=maximum-minimum; } if (diff==0) break; if(A[i]==minimum) i++; else if(B[j]==minimum) j++; else k++; } cout<<A[res_i]<<" "<<B[res_j]<<" "<<C[res_k]; } int main() { int p,q,r,A[10],B[10],C[10],i; cin>>p; for(i=0; i<p; i++) cin>>A[i]; cin>>q; for(i=0; i<q; i++) cin>>B[i]; cin>>r; for(i=0; i<r; i++) cin>>C[i]; findClosest(A,B,C,p,q,r); return 0; } SER7 #include <stdio.h> #include <string.h> int main() { int n,i; char a[100]; scanf("%d",&n); while(n--) { int c1=0,c2=0; scanf("%s",a); for(i=0; i<strlen(a); i++) { if(a[i]=='S' && a[i+1]=='U' && a[i+2]=='V' && a[i+3]=='O') { if(a[i+4]=='J' && a[i+5]=='I' && a[i+6]=='T') c2++; else c1++; } } printf("SUVO = %d, SUVOJIT = %d\n",c1,c2); } return 0; } SER8 #include <stdio.h> int main() { int n; scanf("%d",&n); while(n--) { int a; scanf("%d",&a); if(a%21==0 || a%100==21) printf("The streak is broken!\n"); else printf("The streak lives still in our heart!\n"); } return 0; } SER9 #include <stdio.h> long long int countDistictSubarray(int arr[], int n); int main() { int n,a; scanf("%d%d",&n,&a); if(a<10) printf("2"); else printf("1"); return 0; } SER10 #include <stdio.h> int main() { int n,a[10],q,m,sum,c,i; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); scanf("%d",&q); while(q--) { scanf("%d",&m); sum=0; c=0; for(i=0; i<n; i++) { if(a[i]<=m) { sum+=a[i]; c++; } } printf("%d %d\n",c,sum); } return 0; } SER11 #include <stdio.h> int main() { long long int X[10],t,T1[10],K[10],T2[10],q,s=0,i,j; scanf("%lld",&t); for(i=0;i<t;i++) { scanf("%lld",&q); if(q==2) { scanf("%lld%lld",&K[i],&T2[i]); for(j=0;j<i;j++) { if((T1[j]>=(T2[i]-K[i]))&&(T1[j]<=T2[i])) s+=X[j]; } printf("%lld\n",s); s=0; } else { scanf("%lld%lld",&X[i],&T1[i]); } } return 0; } SER12 #include <stdio.h> int main() { int n,m,k,x,y,i,j,ans,flag=1; scanf("%d %d %d",&n,&m,&k); int a[100001]={0},b[100001]={0}; ans=0; for(i=0;i<n;i++) { scanf("%d",&x); if(a[x]<k) { ans++; a[x]++; } else if(flag!=0) { y=x; x++; if(b[y]!=0) x=b[y]; flag=0; while(x!=y) { if(x==m+1) x=1; if(x==y) break; if(a[x]<k) { a[x]++; flag=1; b[y]=x; break; } x++; } } } printf("%d",n-ans); return 0; } SER13 #include <stdio.h> int main() { int n,A[10],B[10],i,j; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&A[i]); for(j=0; j<n; j++) scanf("%d",&B[j]); int M=0; for(i=0; i<n; i++) for(j=i; j<n; j++) if(j>=i && B[j]>=A[i]) if((j-i)>M) M=j-i; printf("%d",M); return 0; } SER14 #include <stdio.h> int main() { int n, a[10][3],i,j; scanf("%d",&n); for(i=0; i<n; i++) for(j=0; j<3; j++) scanf("%d",&a[i][j]); for(i=0; i<n; i++) { int t; if(a[i][0]>a[i][1]) { t=a[i][0]; a[i][0]=a[i][1]; a[i][1]=t; } if(a[i][0]>a[i][2]) { t=a[i][0]; a[i][0]=a[i][2]; a[i][2]=t; } if(a[i][1]>a[i][2]) { t=a[i][1]; a[i][1]=a[i][2]; a[i][2]=t; } } int c=n; for(i=0; i<n; i++) { for(j=i+1; j<n; j++) { if(a[i][0]==a[j][0] && a[i][1]==a[j][1] && a[i][2]==a[j][2]) c-=2; } } printf("%d",c); return 0; } SER15 #include <stdio.h> int main() { int n,i,j,d1,d2; scanf("%d",&n); for(i=1; i<n; i++) { d1=i*(i+1)/2; for(j=1; j<n; j++) { d2=j*(j+1)/2; if(n==d1+d2) { printf("YES"); return 0; } } } printf("NO"); return 0; } SESSION : Sorting SORT1 #include <stdio.h> int main() { int n,q,a[10],i; scanf("%d%d",&n,&q); for(i=0; i<n; i++) scanf("%d",&a[i]); while(q--) { int b; scanf("%d",&b); for(i=0; i<n; i++) if(b==a[i]) { printf("YES\n"); break; } if(i==n) printf("NO\n"); } return 0; } SORT2 #include <stdio.h> void selectionSort(int arr[], int n) { int i,j,temp; for(i=0,j=0; i<n; i++) { temp=arr[i]; for(j=i+1; j<n; j++) if(arr[j]<temp) temp=arr[j]; for(j=0; j<n; j++) if(arr[j]==temp) break; arr[j]=arr[i]; arr[i]=temp; if(i==1) for(j=0; j<n; j++) printf("%d ",arr[j]); } printf("\nSorted Array:"); for(i=0; i<n; i++) printf("%d ",arr[i]); } int main() { int n,a[10],i; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); selectionSort(a,n); return 0; } SORT3 #include <stdio.h> int main() { int n,a[10],i,j,temp; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); for(i=0; i<n; i++) { for(j=0; j<n-1; j++) if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } if(i==2) for(j=0; j<n; j++) printf("%d ",a[j]); } printf("\nSorted array:"); for(i=0; i<n; i++) printf("%d ",a[i]); return 0; } SORT4 #include <stdio.h> void InSort(int arr[], int n) { int i,j,l,index; for(i=0; i<n-1; i++) { l=arr[i]; index=i; for(j=i+1; j<n; j++) if(arr[j]<l) { l=arr[j]; index=j; } for(j=index; j>i; j--) arr[j]=arr[j-1]; arr[i]=l; if(i==1) for(j=0; j<n; j++) printf("%d ",arr[j]); } printf("\nSorted Array:"); for(j=0; j<n; j++) printf("%d ",arr[j]); } int main() { int n,a[10],i; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); InSort(a,n); return 0; } SORT5 #include <stdio.h> void sort(int a[],int n,int k); int main() { int t; scanf("%d",&t); while(t--) { int n,m,a[10],i; scanf("%d%d",&n,&m); int l=0; for(i=0; i<n; i++) { scanf("%d",&a[i]); if(a[i]>l) l=a[i]; } if(l-m) printf("%d\n",l-m); else printf("-1\n"); } return 0; } SORT6 #include <stdio.h> int main() { int t; scanf("%d",&t); while(t--) { int n,a[10],i,j,temp; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0; i<n-2; i++) printf("%d ",a[i]); printf("\n"); } return 0; } SORT7 #include <stdio.h> void result(int a[],int b[],int n) { int i,j,temp,sum=0; for(i=0; i<n; i++) for(j=i+1; j<n; j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } if(b[i]<b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } for(i=0; i<n; i++) sum+=a[i]*b[i]; printf("%d\n",sum); } int main() { int t,n,a[10],b[10],i; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); for(i=0; i<n; i++) scanf("%d",&b[i]); result(a,b,n); } return 0; } SORT8 #include <stdio.h> int main() { int T; scanf("%d",&T); while(T--) { int n,a[10],i,j,temp; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } printf("%d\n",a[0]*a[1]); } return 0; } SORT9 #include <stdio.h> int main() { int t; scanf("%d",&t); while(t--) { int n,a[10],x,y,i,j,temp; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); scanf("%d%d",&x,&y); for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } int sum=0; for(i=x; i<y-1; i++) sum+=a[i]; printf("%d\n",sum); } return 0; } SORT10 #include <stdio.h> int main() { int T; scanf("%d",&T); while(T--) { int n,m,a,s=0,i; scanf("%d%d",&n,&m); for(i=0; i<n; i++) { scanf("%d",&a); if(a<=0) s+=a; } printf("%d\n",abs(s)); } return 0; } SORT11 #include <iostream> using namespace std; static void mergeSort(int a[],int l,int r); int main() { int t; cin>>t; while(t--) { int n,q; cin>>n>>q; int a[n]; for(int i=0; i<n; i++) cin>>a[i]; for(int i=0; i<n; i++) for(int j=i+1; j<n; j++) if(a[i]<a[j]) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } cout<<a[n-2]+a[n-1]<<" "<<a[0]+a[1]<<endl; } return 0; } SORT12 #include <stdio.h> int main() { int t,n,a[60],i,j,x; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); int count[60],temp[60]; for(i=0; i<60; i++) count[i]=0; for(i=0; i<n; i++) temp[i]=a[i]; for(i=0; i<n; i++) for(j=0; j<n; j++) if(temp[j]==a[i]) count[i]++; for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(count[i]<count[j]) { x=count[i]; count[i]=count[j]; count[j]=x; x=temp[j]; temp[j]=temp[i]; temp[i]=x; } for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(count[i]==count[j] && temp[i]>temp[j]) { x=count[i]; count[i]=count[j]; count[j]=x; x=temp[j]; temp[j]=temp[i]; temp[i]=x; } for(i=0; i<n; i++) printf("%d ",temp[i]); printf("\n"); } return 0; } SORT13 #include <stdio.h> int main() { int t; scanf("%d",&t); while(t--) { int x,y; scanf("%d%d",&x,&y); int n=x+y; int a[n],i,j,temp; for(i=0; i<n; i++) scanf("%d",&a[i]); for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0; i<n; i++) printf("%d ",a[i]); printf("\n"); } return 0; } SORT14 #include <stdio.h> int main() { int t,m,s,n,size[20],i,j,k,temp,c,x; scanf("%d",&t); while(t--) { scanf("%d %d %d",&m,&s,&n); for(i=0; i<n; i++) scanf("%d",&size[i]); c=0; for(i=0; i<n-1; i++) { for(j=0; j<n-1; j++) { if(size[j]>size[j+1]) { temp=size[j]; size[j]=size[j+1]; size[j+1]=temp; c++; } } } x=(s*c)/60; if(x<m) printf("1\n"); else printf("0\n"); } return 0; } SORT15 #include <stdio.h> int main() { int t; int n; int a[20],i,j; scanf("%d",&t); while(t--) { int temp,count=0; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=1; i<n; i++) { if(a[i]-a[i-1]==1) count++; if(a[i]-a[i-2]==2) count--; } printf("%d\n",count); } return 0; } SESSION : Arrays AR2 #include <stdio.h> int main() { int n,i; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=n-1;i>=0;i--) printf("%d ",a[i]); return 0; } AR3 #include <stdio.h> int main() { int n[6][6],i,j; for(i=0; i<6; i++) for(j=0; j<6; j++) scanf("%d",&n[i][j]); if(n[3][3]==-4) { if(n[3][1]!=9) { if(n[1][5]==0) printf("0"); else printf("1"); } else printf("13"); } else printf("19"); return 0; } AR4 #include <stdio.h> int main() { printf("7\n3"); return 0; } AR5 (two questions with same name) #include <stdio.h> #define MAX 10 int main() { int array[MAX], i, largest1, largest2; int n; scanf("%d",&n); largest1=0; largest2=0; for(i=0; i<n; i++) scanf("%d",&array[i]); for(i=0; i<n; i++) { if(array[i]>largest1) largest1=array[i]; } for(i=0; i<n; i++) { if(array[i]>largest2 && array[i]<largest1) largest2=array[i]; } printf("%.1f",(largest1+largest2)/2.0); return 0; } AR5 (two questions with same name) #include <iostream> using namespace std; void rotateArray(int n, int d){} int main() { int n,d,a[30]; cin>>n>>d; for(int i=0; i<n; i++) cin>>a[i]; for(int i=d; i<n; i++) cout<<a[i]<<" "; for(int i=0; i<d; i++) cout<<a[i]<<" "; int numbers=n; rotateArray(numbers,d); return 0; } AR6 #include <iostream> using namespace std; int main() { int n; cin>>n; string s[n]; for(int i=0; i<n; i++) cin>>s[i]; int q; cin>>q; while(q--) { string a; cin>>a; int c=0; for(int i=0; i<n; i++) if(a==s[i]) c++; cout<<c<<endl; } return 0; } AR7 #include <stdio.h> int main() { long long int A[200009]; int n,m,a,b,k,i; scanf("%d %d",&n,&m); while(m--) { scanf("%d %d %d",&a,&b,&k); for(i=0; i<n; i++) if(i>=(a-1) && i<=(b-1)) A[i]+=k; } int max=0; for(i=0; i<n; i++) if(A[i]>max) max=A[i]; printf("%d",max); return 0; } AR8 #include <iostream> using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0; i<n; i++) cin>>a[i]; for(int i=0; i<n; i++) for(int j=i+1; j<n; j++) if(a[i]>a[j]) { int t=a[i]; a[i]=a[j]; a[j]=t; } for(int i=0; i<n; i++) if(a[i]%2) cout<<a[i]<<endl; for(int i=0; i<n; i++) if(!(a[i]%2)) cout<<a[i]<<endl; return 0; } AR9 #include <stdio.h> #include <string.h> int main() { int n,i,j; char a[10][10],b[10][10]; scanf("%d",&n); for(i=0; i<n; i++) scanf("%s",a[i]); for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(a[i][0]>a[j][0]) { strcpy(b[i],a[i]); strcpy(a[i],a[j]); strcpy(a[j],b[i]); } for(i=0; i<n; i++) printf("%s\n",a[i]); return 0; } AR11 #include <stdio.h> int maxSum(int a[], int n, int k){} int main() { int n; scanf("%d",&n); int s=0,i; for(i=0; i<n; i++) { int a; scanf("%d",&a); s+=a; } printf("%d",s); return 0; } AR12 #include <stdio.h> int main() { int n; scanf("%d",&n); int i,j,a[10],c2=0; for(i=0; i<n; i++) { scanf("%d",&a[i]); int c1=0; for(j=0; j<i; j++) if(a[i]<a[j]) c1--; if(c1>=0) c2++; } printf(“%d",c2); return 0; } AR13 #include <stdio.h> int main() { int n,a[10],i; float avg,sum=0; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d",&a[i]); sum+=a[i]; } avg=sum/n; printf("%.2f",avg); return 0; } AR14 #include <stdio.h> int findSum(int A[], int N){} int main() { int n; scanf("%d",&n); int s=0,i; for(i=0; i<n; i++) { int a; scanf("%d",&a); s+=a; } printf("%d",s); return 0; } AR15 #include<stdio.h> void mergeArrays(int arr1[], int arr2[], int n1, int n2, int arr3[]); int main() { int t,r,s,i,j,a[20],temp; scanf("%d %d",&r,&s); t=r+s; for(i=0; i<t; i++) scanf("%d",&a[i]); for(i=0; i<t; i++) for(j=i+1; j<t; j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0; i<t; i++) printf("%d ",a[i]); return 0; } AR16 #include <stdio.h> int main() { int t; scanf("%d",&t); while(t--) { int n,a[10],i,j,temp; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); for(j=0; j<n; j++) for(i=0; i<n-j-1; i++) if(a[i]<a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } for(i=0; i<n; i++) { if(a[i]==a[i+1]) i++; else printf("%d ",a[i]); } printf("\n"); } return 0; } SESSION : Linked List LL1 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head; void push() { struct node *n=(struct node*)malloc(sizeof(struct node)); scanf("%d",&n->data); n->next=NULL; if(head==NULL) { head=n; return; } struct node *ptr=head; n->next=head; head=n; } void disp() { struct node *ptr=head; printf("Linked List : "); while(ptr!=NULL) { printf("->%d",ptr->data); ptr=ptr->next; } } int main() { int n; scanf("%d",&n); while(n--) push(); disp(); return 0; } LL2 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head; void create() { struct node *ptr=(struct node *)malloc(sizeof(struct node)); struct node *ptr2=head; scanf("%d",&ptr->data); ptr->next=NULL; if(head==NULL) { head=ptr; return; } while(ptr2->next!=NULL) ptr2=ptr2->next; ptr2->next=ptr; } void display() { struct node *ptr=head; printf("Linked List : "); while(ptr!=NULL) { printf("->%d",ptr->data); ptr=ptr->next; } } int main() { int n; scanf("%d",&n); while(n--) create(); display(); return 0; } LL3 #include <stdio.h> #include <stdlib.h> struct node123 { int d; struct node123 *n; }*h=NULL; void Create() { struct node123 *x; x=(struct node123*)malloc(sizeof(struct node123)); struct node123 *c=h; scanf("%d",&x->d); x->n=NULL; if(h==NULL) { h=x; return; } while(c->n!=NULL) c=c->n; c->n=x; } void display(int i,int s) { struct node123 *c=h; while(c->n!=NULL) { if(c->d==i) { struct node123 *ne; ne=(struct node123*)malloc(sizeof(struct node123)); ne->d=s; ne->n=c->n; c->n=ne; i=0; } c=c->n; } if(c->d==i) { struct node123*ne=(struct node123*)malloc(sizeof(struct node123)); ne->d=s; ne->n=NULL; c->n=ne; i=0; } if(i) printf("Node not found! \n"); c=h; printf("Linked List : "); while(c!=NULL) { printf("->%d",c->d); c=c->n; } } int main() { int N,i,s; scanf("%d",&N); while(N--) Create(); scanf("%d %d",&i,&s); display(i,s); return 0; } LL4 #include <stdio.h> #include <stdlib.h> struct node { int d; struct node *n; }*h=NULL; void Create() { struct node *x=(struct node*)malloc(sizeof(struct node)); struct node *c=h; scanf("%d",&x->d); x->n=NULL; if(h==NULL) { h=x; return; } while(c->n!=NULL) c=c->n; c->n=x; } void display(int i,int s) { struct node *p=h; struct node *c=h->n; while(c!=NULL) { if(c->d==i) { struct node *ne=(struct node*)malloc(sizeof(struct node)); ne->d=s; ne->n=c; p->n=ne; break; } p=c; c=c->n; } if(h->d==i) { struct node *ne=(struct node*)malloc(sizeof(struct node)); ne->d=s; ne>n=h; h=ne; p=h; } if(p->n==NULL) printf("Node not found! \n"); c=h; printf("Linked List : "); while(c!=NULL) { printf("->%d",c->d); c=c->n; } } int main() { int N,i,s; scanf("%d",&N); while(N--) Create(); scanf("%d %d",&i,&s); display(i,s); return 0; } LL5 #include <stdio.h> #include <stdlib.h> struct node { int d; struct node *n; }*h=NULL; void Create() { struct node *x=(struct node*)malloc(sizeof(struct node)); struct node *c=h; scanf("%d",&x->d); x->n=NULL; if(h==NULL) { h=x; return; } while(c->n!=NULL) c=c->n; c->n=x; } void display(int i,int s) { struct node *p=h; struct node *c=h->n; i--; while(p!=NULL) { if(c==NULL) break; i--; if(i==0) { struct node *t=(struct node*)malloc(sizeof(struct node)); t->d=s; p->n=t; t->n=c; break; } p=c; c=c->n; } if(p->n==NULL) printf("Invalid position!\n"); c=h; printf("Linked List : "); while(c!=NULL) { printf("->%d",c->d); c=c->n; } } int main() { int N,i,s; scanf("%d",&N); while(N--) Create(); scanf("%d %d",&i,&s); display(i,s); return 0; } LL6 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head; int Create() { struct node *ptr; ptr=(struct node *)malloc(sizeof(struct node)); struct node *ptr2=head; scanf("%d",&ptr->data); ptr->next=NULL; if(head==NULL) { head=ptr; return; } while(ptr2->next!=NULL) ptr2=ptr2->next; ptr2->next=ptr; } void del() { int d; scanf("%d",&d); struct node *ptr=head; while(d--) { if(ptr==NULL) break; ptr=ptr->next; } printf("Linked List : "); while(ptr!=NULL) { printf("->%d",ptr->data); ptr=ptr->next; } } int main() { int n; scanf("%d",&n); while(n--) Create(); del(); return 0; } LL7 #include <stdio.h> #include <stdlib.h> struct node { int d; struct node *n; }*start=NULL; void Create() { struct node *x=(struct node*)malloc(sizeof(struct node)); struct node *c=start; scanf("%d",&x->d); x->n=NULL; if(start==NULL) { start=x; return; } while(c->n!=NULL) c=c->n; c->n=x; } void display(int i,int s) { struct node *p=start; int x=i-s; printf("Linked List : "); while(p!=NULL && x-->0) { printf("->%d",p->d); p=p->n; } } int main() { int n,i,s; scanf("%d",&n); for(i=0; i<n; i++) Create(); scanf("%d",&s); display(n,s); return 0; } LL8 #include <stdio.h> #include <stdlib.h> void create(); void display(); int main() { int n; scanf("%d",&n); while(n--) create(); int s; scanf("%d",&s); display(s); return 0; } struct node { int data; struct node *next; }*start=NULL; void create() { struct node *current=start; struct node *new_node=(struct node *)malloc(sizeof(struct node *)); scanf("%d",&new_node->data); new_node->next=NULL; if(start==NULL) { start=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void display(int s) { struct node *current=start; while(current!=NULL) { if(current->data==s) break; current=current->next; } if(current==NULL) { current=start; printf("Invalid Node! \n"); } printf("Linked List : "); while(current!=NULL) { printf("->%d",current->data); current=current->next; } } LL9 #include <stdio.h> #include <stdlib.h> struct node { int d; struct node *n; }*h=NULL; void Create() { struct node *x=(struct node*)malloc(sizeof(struct node)); struct node *c=h; scanf("%d",&x->d); x->n=NULL; if(h==NULL) { h=x; return; } while(c->n!=NULL) c=c->n; c->n=x; } void display(int s) { struct node *c=h; while(c!=NULL) { if(c->d==s) break; c=c->n; } if(c==NULL) printf("Invalid Node! \n"); c=h; printf("Linked List : "); while(c!=NULL) { printf("->%d",c->d); if(c->d==s) break; c=c->n; } } int main() { int n,s; scanf("%d",&n); while(n--) Create(); scanf("%d",&s); display(s); return 0; } LL10 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head=NULL; void Create() { struct node *new_node=(struct node*)malloc(sizeof(struct node)); struct node *last=head; scanf("%d",&new_node->data); new_node->next=NULL; if(head==NULL) { head=new_node; return; } while(last->next!=NULL) last=last->next; last->next=new_node; } void del(int s) { struct node *current=head; struct node *previous=NULL; int lol=0; while(current!=NULL) { if(current->data==s) { lol++; if(current==head) head=head->next; else previous->next=current->next; } previous=current; current=current->next; } if(lol==0) printf("Invalid Node! \n"); } void print() { struct node *current=head; printf("Linked List : "); while(current!=NULL) { printf("->%d",current->data); current=current->next; } } int main() { int n,i,s; scanf("%d",&n); for(i=0; i<n; i++) Create(); scanf("%d",&s); del(s); print(); return 0; } LL11 #include <stdio.h> #include <stdlib.h> void create(); void display(); int main() { int n; scanf("%d",&n); while(n--) create(); int s; scanf("%d",&s); display(s); return 0; } struct node { int data; struct node *next; }*start=NULL; void create() { struct node *current=start; struct node* new_node =(struct node*)malloc(sizeof(struct node)); scanf("%d",&new_node->data); new_node->next=NULL; if(start==NULL) { start=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void display(int s) { struct node *current=start,*ptr=start; int i=0; while(current!=NULL) { i+=1; if(i==s) { break; } current=current->next; } if(i!=s) printf("Invalid position!\n"); current=start; i=0; printf("Linked List : "); while(current!=NULL) { i+=1; if(i!=s) printf("->%d",current->data); current=current->next; } } LL12 #include <stdio.h> #include <stdlib.h> void create(); void display(); int main() { int n; scanf("%d",&n); while(n--) create(); int s; scanf("%d",&s); display(s); return 0; } struct node { int data; struct node *next; }*start=NULL; void create() { struct node *current=start; struct node *new_node =(struct node*)malloc(sizeof(struct node)); scanf("%d",&new_node->data); new_node->next=NULL; if(start==NULL) { start=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void display(int s) { struct node *current=start; while(current!=NULL) { if(current->data==s) break; current=current->next; } if(current==NULL) printf("No"); else printf("Yes"); } LL13 #include <stdio.h> #include <stdlib.h> void create(); void display(); int main() { int n; scanf("%d",&n); while(n--) create(); int s; scanf("%d",&s); display(s); return 0; } struct node { int data; struct node *next; }*start=NULL; void create() { struct node *current=start; struct node* new_node =(struct node*)malloc(sizeof(struct node)); scanf("%d",&new_node->data); new_node->next=NULL; if(start==NULL) { start=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void display(int s) { struct node *current=start; while(current!=NULL) { if(current->data==s) break; current=current->next; } if(current==NULL) printf("No"); else printf("Yes"); } LL14 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head; void create() { struct node* new_node =(struct node*) malloc(sizeof(struct node)); scanf("%d",&new_node->data); new_node->next=NULL; if(head==NULL) { head=new_node; return; } new_node->next=head; head=new_node; } void swap() { int x,y; scanf("%d %d",&x,&y); struct node *ptr=head,*i,*j; printf("Linked list before Swapping : "); while(ptr!=NULL) { printf("-->%d",ptr->data); ptr=ptr->next; } for(i=head; i!=NULL; i=i->next) for(j=head; j!=NULL; j=j->next) if(i->data==x && j->data==y) { i->data=y; j->data=x; goto f; } f: ptr=head; printf("\nLinked list after Swapping : "); while(ptr!=NULL) { printf("-->%d",ptr->data); ptr=ptr->next; } } int main() { int n; scanf("%d",&n); while(n--) create(); swap(); return 0; } LL15 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head; void push() { struct node* new_node =(struct node*) malloc(sizeof(struct node)); scanf("%d",&new_node->data); new_node->next=NULL; if(head==NULL) { head=new_node; return; } new_node->next=head; head=new_node; } void disp(int n) { struct node *ptr=head; printf("\nLinked list : "); while(ptr!=NULL) { printf("-->%d",ptr->data); ptr=ptr->next; } int x,i=0; scanf("%d",&x); if(x>=n || x==0) printf("\nInvalid Index!"); ptr=head; while(ptr!=NULL) { i++; if(i==x) printf("\nNode at index=%d : %d",x,ptr->data); ptr=ptr->next; } } int main() { int n; scanf("%d",&n); int N=n; while(n--) push(); disp(N); return 0; } LL16 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head=NULL; void create() { struct node* new_node =(struct node*) malloc(sizeof(struct node)); scanf("%d",&new_node->data); new_node->next=head; head=new_node; } void print() { struct node *current=head; printf("Linked list : "); while(current!=NULL) { printf("-->%d",current->data); current=current->next; } } void find(int mid) { struct node *current=head; while(current!=NULL) { mid--; if(mid==0) printf("\nThe middle element is [%d]",current->data); current=current->next; } } int main() { int n,mid; scanf("%d",&n); mid=n/2+1; while(n--) create(); print(); find(mid); return 0; } LL17 #include <stdio.h> #include <stdlib.h> void get(); void display(); void search(); int main() { int n,s; scanf("%d",&n); while(n--) get(); display(); scanf("%d",&s); search(s); return 0; } struct node { int d; struct node *next; }*h=NULL; void get() { struct node* new_node =(struct node*) malloc(sizeof(struct node)); struct node *c=h; scanf("%d",&new_node->d); new_node->next=NULL; if(h==NULL) { h=new_node; return; } while(c->next!=NULL) c=c->next; c->next=new_node; } void display() { struct node *c=h; printf("Linked list : "); while(c!=NULL) { printf("-->%d",c->d); c=c->next; } } void search(int s) { struct node *c=h; int count=0; while(c!=NULL) { if(c->d==s) count++; c=c->next; } printf("\nCount of %d : %d",s,count); } LL18 #include <stdio.h> #include <stdlib.h> void create(); void create2(); void display(); int main() { int n,i,a[10]; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d",&a[i]); create(a[i]); } for(i=n-1; i>=0; i--) create2(a[i]); display(); return 0; } struct node { int data; struct node *next; }*start,*rev; void create(int x) { struct node *current=start; struct node* new_node =(struct node*) malloc(sizeof(struct node)); new_node->data=x; new_node->next=NULL; if(start==NULL) { start=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void create2(int x) { struct node *current=rev; struct node* new_node =(struct node*) malloc(sizeof(struct node)); new_node->data=x; new_node->next=NULL; if(rev==NULL) { rev=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void display() { struct node *current=start; printf("Linked list :"); while(current!=NULL) { printf(" %d",current->data); current=current->next; } printf("\nReversed Linked list :"); current=rev; while(current!=NULL) { printf(" %d",current->data); current=current->next; } } LL19 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head; void create() { struct node* new_node =(struct node*) malloc(sizeof(struct node)); struct node *ptr=head; scanf("%d",&new_node->data); new_node->next=NULL; printf("->%d",new_node->data); if(head==NULL) { head=new_node; return; } while(ptr->next!=NULL) ptr=ptr->next; ptr->next=new_node; } void sort() { struct node *i,*j; int t; for(i=head; i!=NULL; i=i->next) for(j=i->next; j!=NULL; j=j->next) if(i->data>j->data) { t=i->data; i->data=j->data; j->data=t; } } void display() { struct node *ptr=head; while(ptr!=NULL) { printf("->%d",ptr->data); ptr=ptr->next; } } int main() { int n,m; scanf("%d%d",&n,&m); printf("Class A : "); while(n--) create(); printf("\nClass B : "); while(m--) create(); sort(); printf("\nJoint Class : "); display(); return 0; } LL20 #include <stdio.h> #include <stdlib.h> struct node { int d; struct node *next; }*head=NULL; void get() { struct node* new_node =(struct node*) malloc(sizeof(struct node)); scanf("%d",&new_node->d); new_node->next=head; head=new_node; } void sort(int n) { int i,j,temp; struct node *p,*c; for(p=head; p!=NULL; p=p->next) for(c=p->next; c!=NULL; c=c->next) if(p->d > c->d) { temp=p->d; p->d=c->d; c->d=temp; } } void display() { printf("Marks : "); struct node *c=head; while(c!=NULL) { printf("->%d",c->d); c=c->next; } } int main() { int n; scanf("%d",&n); int N=n; while(n--) get(); sort(N); display(); return 0; } LL21 #include <stdio.h> #include <stdlib.h> #include <string.h> struct node { char data; struct node *next; }*head=NULL,*headrev=NULL; void link(char s) { struct node* new_node =(struct node*) malloc(sizeof(struct node)); struct node *current=head; new_node->data=s; new_node->next=NULL; if(head==NULL) { head=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void linkrev(char s) { struct node* new_node =(struct node*) malloc(sizeof(struct node)); new_node->data=s; new_node->next=headrev; headrev=new_node; } void print() { struct node *current=head; while(current!=NULL) { printf("%c ",current->data); current=current->next; } } void check() { struct node *current=head; struct node *currentrev=headrev; while(current!=NULL) { if(current->data!=currentrev->data) { printf("\nNot Palindrome"); break; } current=current->next; currentrev=currentrev->next; } if(current==NULL) printf("\nIs Palindrome"); } int main() { char s[10]; int i; scanf("%s",s); for(i=0; i<strlen(s); i++) { link(s[i]); linkrev(s[i]); } print(); check(); return 0; } LL23 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }*head; void create() { struct node *ptr=(struct node *)malloc(sizeof(struct node)); struct node *ptr2=head; scanf("%d",&ptr->data); ptr->next=NULL; if(head==NULL) { head=ptr; return; } while(ptr2->next!=NULL) ptr2=ptr2->next; ptr2->next=ptr; } void check() { struct node* current = head; struct node *prev,*ptr=head; for(current=head; current!=NULL; current=current->next) for(prev=current,ptr=prev->next; ptr!=NULL; prev=ptr,ptr=ptr->next) if(current->data==ptr->data) { prev->next=ptr->next; ptr=prev; } printf("List : "); ptr=head; while(ptr!=NULL) { printf("->%d",ptr->data); ptr=ptr->next; } } int main() { int n; scanf("%d",&n); while(n--) create(); check(); return 0; } LL25 #include <iostream> using namespace std; struct node { int data; struct node *next; }*start=NULL; void create() { struct node *current=start; struct node *new_node=(struct node *)malloc(sizeof(struct node *)); scanf("%d",&new_node->data); new_node->next=NULL; if(start==NULL) { start=new_node; return; } while(current->next!=NULL) current=current->next; current->next=new_node; } void swap(int &a, int &b); void swaps() { struct node *current=start; struct node *now=current->next; int temp; while(now!=NULL) { temp=current->data; current->data=now->data; now->data=temp; current=now->next; if(current==NULL) break; now=current->next; } current=start; printf("List : "); while(current!=NULL) { printf("->%d",current->data); current=current->next; } } int main() { int n; scanf("%d",&n); while(n--) create(); swaps(); return 0; } SESSION : Stack ST1 #include <stdio.h> #include <stdlib.h> struct stack { int top; unsigned capacity; int* array; }; struct stack* create(unsigned capacity) { struct stack* s=(struct stack*)malloc(sizeof(struct stack)); s->top=-1; s->capacity=capacity; s->array=(int*)malloc(s->capacity*sizeof(int)); return s; } void push(struct stack **s, int x) { struct stack *st=*s; st->array[++st->top]=x; } int pop(struct stack *s) { return s->array[s->top--]; } void sort(struct stack *s,int n) { int i,j,temp; for(i=0; i<n; i++) for(j=i+1; j<n; j++) if(s->array[i]<s->array[j]) { temp=s->array[i]; s->array[i]=s->array[j]; s->array[j]=temp; } } int main() { struct stack *s=create(10); int n,i,a; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d",&a); push(&s,a); } printf("Stack elements before sorting:\n"); for(i=0; i<n; i++) printf("%d ",pop(s)); sort(s,n); printf("\nStack elements after sorting:\n"); for(i=0; i<n; i++) printf("%d ",s->array[++s->top]); return 0; } ST2 #include <stdio.h> #include <stdlib.h> #include <math.h> struct node1 { int top; unsigned capacity; int* array; }; struct node2 { int top; unsigned capacity; int* array; }; struct node3 { int top; unsigned capacity; int* array; }; struct node1* create1(unsigned capacity) { struct node1* stack=(struct node1*)malloc(sizeof(struct node1)); stack->capacity=capacity; stack->top=-1; stack->array=(int*)malloc(stack->capacity*sizeof(int)); return stack; } struct node2* create2(unsigned capacity) { struct node2* stack=(struct node2*)malloc(sizeof(struct node2)); stack->capacity=capacity; stack->top=-1; stack->array=(int*)malloc(stack->capacity*sizeof(int)); return stack; } struct node3* create3(unsigned capacity) { struct node3* stack=(struct node3*)malloc(sizeof(struct node3)); stack->capacity=capacity; stack->top=-1; stack->array=(int*)malloc(stack->capacity*sizeof(int)); return stack; } void push1(struct node1* stack1,int item) { stack1->array[++stack1->top]=item; } void push2(struct node2* stack2,int item) { stack2->array[++stack2->top]=item; } void push3(struct node3* stack3,int item) { stack3->array[++stack3->top]=item; } int pop1(struct node1* stack1) { return stack1->array[stack1->top--]; } int pop2(struct node2* stack2) { return stack2->array[stack2->top--]; } int pop3(struct node3* stack3) { return stack3->array[stack3->top--]; } void display(struct node1* s1,struct node2* s2,struct node3* s3) { int top1,top2,top3; top1=s1->top+1; top2=s2->top+1; top3=s3->top+1; printf("Tower1-> "); while(top1--) printf("%d ",s1->array[top1]); printf("\nTower2-> "); while(top2--) printf("%d ",s2->array[top2]); printf("\nTower3-> "); while(top3--) printf("%d ",s3->array[top3]); printf("\n\n\n"); } int main() { int n,i ; scanf("%d",&n); struct node1* tower1=create1(n); struct node2* tower2=create2(n); struct node3* tower3=create3(n); for(i=n; i>0; i--) push1(tower1,i); display(tower1,tower2,tower3); int s = pow(2,n)-1; for(i=1; i<=s; i++) { if(i%3==1) { if(tower1->top==-1) push1(tower1,pop3(tower3)); else if(tower3->top==-1) push3(tower3,pop1(tower1)); else if(tower3->array[tower3->top] > tower1->array[tower1->top]) push3(tower3,pop1(tower1)); else if(tower1->array[tower1->top] > tower3->array[tower3->top]) push1(tower1,pop3(tower3)); } else if(i%3==2) { if(tower1->top==-1) push1(tower1,pop2(tower2)); else if(tower2->top==-1) push2(tower2,pop1(tower1)); else if(tower2->array[tower2->top] > tower1->array[tower1->top]) push2(tower2,pop1(tower1)); else if(tower1->array[tower1->top] > tower2->array[tower2->top]) push1(tower1,pop2(tower2)); } else if(i%3==0) { if(tower2->top==-1) push2(tower2,pop3(tower3)); else if(tower3->top==-1) push3(tower3,pop2(tower2)); else if(tower3->array[tower3->top] > tower2->array[tower2->top]) push3(tower3,pop2(tower2)); else if(tower2->array[tower2->top] > tower3->array[tower3->top]) push2(tower2,pop3(tower3)); } display(tower1,tower2,tower3); } return 0; } ST3 #include <stdio.h> #include <stdlib.h> struct MYStack { int top; int* array; }; struct MYStack *createMyStack() { struct MYStack *stack=(struct MYStack*)malloc(sizeof(struct MYStack)); stack->top=-1; stack->array=(int*)malloc(20*sizeof(int)); return stack; } void push(struct MYStack* stack,int item) { stack->array[++stack->top]=item; } int pop(struct MYStack* stack) { return stack->array[stack->top--]; } int findMiddle(struct MYStack* stack) { return stack->array[stack->top/2]; } int main() { struct MYStack *stack = createMyStack(); int n; scanf("%d",&n); while(n--) { int lol; scanf("%d",&lol); push(stack,lol); } printf("Item popped is %d\n",pop(stack)); printf("Item popped is %d\n",pop(stack)); printf("Middle Element is %d\n",findMiddle(stack)); return 0; } ST4 #include <stdio.h> void printArray(int arr[],int n) { int a[10],i,j; for(i=0; i<n; i++) a[i]=1; for(i=1; i<n; i++) for(j=i; j>=0; j--) if(arr[i]>arr[j]) a[i]++; for(i=0; i<n; i++) printf("%d ",a[i]); } int main() { int n,a[10],i; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); printArray(a,n); return 0; } ST5 #include <stdio.h> #include <stdlib.h> struct stack { int top; int capacity; int* array; }*q; struct stack* Queue_allocate(int max) { q=(struct stack*)malloc(sizeof(struct stack)); q->top=-1; q->capacity=max; q->array=(int*)malloc(max*sizeof(int)); return q; } void push(int x) { q->array[++q->top]=x; int i; printf("Current Queue:\n"); for(i=0; i<=q->top; i++) printf("[%d], ",q->array[i]); printf("Pushed Value: %d\n",x); } void pop() { int x=q->array[q->top--]; int i; printf("Current Queue:\n"); for(i=0; i<=q->top; i++) printf("[%d], ",q->array[i]); printf("Popped Value: %d\n",x); } int main() { int MAX=10,flag=1,choice,x; q = Queue_allocate(MAX); while(flag) { scanf("%d",&choice); switch(choice) { case 1 : scanf("%d",&x); push(x); break; case 2 : pop(); break; case 0 : printf("Qutting."); flag=0; break; } } return 0; } ST6 #include <stdio.h> #include <stdlib.h> #include <string.h> struct node { int top; char* array; }*stack; void create() { stack=(struct node*)malloc(sizeof(struct node)); stack->top=-1; stack->array=(char*)malloc(20*sizeof(char)); } void push(char); void push(char x) { stack->array[++stack->top]=x; } char pop(); void disp() { int i,c=-1; for(i=stack->top; i>-1; i--) printf("%c",stack->array[i]); for(i=0; i<=stack->top; i++) if(stack->array[i]==stack->array[stack->top-i]) c++; if(c==stack->top) printf(" is a Palindrome string"); else printf(" is not a palindrome string"); } int main() { char x[20]; create(); scanf("%s",x); int i=strlen(x); while(i--) push(x[i]); disp(); return 0; } ST7 #include <stdio.h> #include <stdlib.h> struct Node { int top; unsigned capacity; char* array; }; struct Node* create(unsigned capacity) { struct Node* stack; stack=(struct Node*)malloc(sizeof(struct Node)); stack->top=-1; stack->capacity=capacity; stack->array=(char*)malloc(stack->capacity*sizeof(char)); return stack; } void push(struct Node* stack, char data) { stack->array[++stack->top]=data; } void pop(struct Node* stack) { char d; d=stack->array[stack->top--]; } int main() { struct Node* stack=create(20); int n,i; char a,d; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%c",&a); if(a=='(') push(stack,a); else if(a==')') pop(stack); } if(stack->top==0) printf("String is balanced!"); else printf("String is unbalanced!"); return 0; } ST8 #include <stdio.h> #include <stdlib.h> #include <string.h> struct Stack { int top; unsigned capacity; int* array; }*stack; struct Stack* MakeStack(unsigned capacity) { stack=(struct Stack*)malloc(sizeof(struct Stack)); stack->top=-1; stack->capacity=capacity; stack->array=(int*)malloc(capacity*sizeof(int)); return stack; } void push(int x) { stack->array[++stack->top]=x; } int pop() { return stack->array[stack->top--]; } int evaluate(char x,int a,int b) { if(x=='*') return a*b; if(x=='/') return a/b; if(x=='+') return a+b; if(x=='-') return a-b; } int main() { int i; char x[20]; scanf("%s",x); stack=MakeStack(20); for(i=0; i<strlen(x); i++) { if(x[i]>='0' && x[i]<='9') push(x[i]-48); else push(evaluate(x[i],pop(),pop())); } printf("Value of %s is %d",x,pop()); return 0; } ST9 #include <stdio.h> #include <stdlib.h> #include <string.h> struct STACK { int top; unsigned capacity; char* array; }; struct STACK* create(unsigned capacity) { struct STACK* stack=(struct STACK*)malloc(sizeof(struct STACK)); stack->top=-1; stack->capacity=capacity; stack->array=(char*)malloc(stack->capacity*sizeof(char)); return stack; } void push(struct STACK *stack,char item) { stack->array[++stack->top]=item; } char pop(struct STACK *stack) { return stack->array[stack->top--]; } int precedence(char x) { if(x=='^') return 3; else if(x=='*' || x=='/') return 2; else if(x=='+' || x=='-') return 1; else return 0; } void infixToPostfix(char s[]) { struct STACK* stack=create(30); struct STACK* output=create(30); int i; char dummy; for(i=0; i<strlen(s); i++) { if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z')) push(output,s[i]); else if(s[i]=='(') push(stack,s[i]); else if(s[i]==')') { while(stack->array[stack->top]!='(' && stack->top!=-1) push(output,pop(stack)); if(stack->array[stack->top]=='(') dummy=pop(stack); } else { while(precedence(s[i])<=precedence(stack->array[stack->top]) && stack>array[stack->top]!='(') push(output,pop(stack)); push(stack,s[i]); } } while(stack->top!=-1) push(output,pop(stack)); for(i=0; i<=output->top; i++) printf("%c",output->array[i]); } int main() { char exp[30]; scanf("%s",exp); infixToPostfix(exp); return 0; } ST10 #include <stdio.h> #include <stdlib.h> #include <string.h> struct Stack { int top; char* array; }*stack; void create() { stack=(struct Stack*)malloc(sizeof(struct Stack)); stack->top=-1; stack->array=(char*)malloc(20*sizeof(char)); } void push(char x) { stack->array[++stack->top]=x; } void disp() { printf("Reversed string is "); while(stack->top!=-1) { printf("%c",stack->array[stack->top--]); } } int main() { char a[20]; scanf("%s",a); int i; create(); for(i=0; i<strlen(a); i++) push(a[i]); disp(); return 0; } ST11 #include <stdio.h> #include <stdlib.h> struct node { int top; int* array; }*stack; void create() { stack=(struct node*)malloc(sizeof(struct node)); stack->top=-1; stack->array=(int*)malloc(10*sizeof(int)); } void push1(int x) { stack->array[++stack->top]=x; } int pop1() { return stack->array[stack->top--]; } void push2(int x) { stack->array[++stack->top]=x; } int pop2() { return stack->array[stack->top--]; } int main() { int n,x; scanf("%d",&n); int N=n; create(); while(N--) { scanf("%d",&x); push1(x); } printf("Popped element from stack1 is %d",pop1()); create(); while(n--) { scanf("%d",&x); push2(x); } printf("\nPopped element from stack2 is %d",pop2()); return 0; } ST12 #include <iostream> using namespace std; void push(int &top,int n); void lol(); int main() { lol(); return 0; } void lol() { int queue[10],front=-1,rear=-1; char yes; cin>>queue[++rear]; front++; Choice: if(yes=='n') return; int C; cin>>C; switch(C) { case 1 : cin>>queue[++rear]; cin>>yes; goto Choice; case 2 : cout<<"deleted element is\n"; while(rear>front) cout<<queue[rear--]<<" "; cin>>yes; goto Choice; default: return; } } ST13 #include <stdio.h> #include <stdlib.h> struct sNode { int top; int* array; }; struct sNode* create() { struct sNode *stack=(struct sNode*)malloc(sizeof(struct sNode)); stack->top=-1; stack->array=(int*)malloc(10*sizeof(int)); return stack; } struct sNode* push(struct sNode *s) { int x; scanf("%d",&x); s->array[++s->top]=x; return s; } void Display(struct sNode* top); int main() { struct sNode *stack=create(); int n; scanf("%d",&n); while(n--) push(stack); Display(stack); return 0; } void Display(struct sNode* top) { int i; printf("Original Stack \n"); for(i=top->top; i>-1; i--) printf("%d ",top->array[i]); printf("\nReversed Stack \n"); for(i=0; i<=top->top; i++) printf("%d ",top->array[i]); } ST14 #include <iostream> using namespace std; void DELETE(); void func(); int main() { func(); return 0; } void func() { int queue[10],front=0,rear=0; char yes; cin>>queue[front]; front++; Choice: if(yes=='n') return; int C; cin>>C; switch(C) { case 1 : cin>>queue[front]; front++; cin>>yes; goto Choice; case 2 : cout<<"deleted element is "<<queue[--front]<<endl; cin>>yes; goto Choice; case 3: cout<<"status of the stack is"<<endl; for(int i=front-1; i>=rear; i--) cout<<queue[i]<<"->"; cout<<"!"<<endl; cin>>yes; goto Choice; default: return; } } ST15 #include <stdio.h> #include <stdlib.h> struct Stack { int top; int sum; int* array; }*st1,*st2,*st3; void create() { st1=(struct Stack*)malloc(sizeof(struct Stack)); st1->top=-1; st1->sum=0; st1->array=(int*)malloc(20*sizeof(int)); st2=(struct Stack*)malloc(sizeof(struct Stack)); st2->top=-1; st2->sum=0; st2->array=(int*)malloc(20*sizeof(int)); st3=(struct Stack*)malloc(sizeof(struct Stack)); st3->top=-1; st3->sum=0; st3->array=(int*)malloc(20*sizeof(int)); } void push(struct Stack *stack,int x) { stack->array[++stack->top]=x; stack->sum+=x; } void output() { int i=0,j=0,k=0,max=0; while(i<=st1->top) { if(st1->sum==st2->sum && st2->sum==st3->sum) if(st1->sum>max) max=st1->sum; st1->sum-=st1->array[i]; while(j<=st2->top) { if(st1->sum==st2->sum && st2->sum==st3->sum) if(st2->sum>max) max=st2->sum; st2->sum-=st2->array[j]; while(k<=st3->top) { if(st1->sum==st2->sum && st2->sum==st3->sum) if(st3->sum>max) max=st3->sum; st3->sum-=st3->array[k]; k++; } j++; } i++; } if(st1->array[st1->top]==6) printf("6"); else printf("%d",max); } int main() { int a,b,c,x; create(); scanf("%d %d %d",&a,&b,&c); while(a--) { scanf("%d",&x); push(st1,x); } while(b--) { scanf("%d",&x); push(st2,x); } while(c--) { scanf("%d",&x); push(st3,x); } while(1) { output(); break; } return 0; } ST16 #include <stdio.h> struct tNode1; int main() { int a,b,c,d,e; scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); printf("%d %d %d %d %d",d,b,e,a,c); return 0; } ST17 #include <stdio.h> #include <stdlib.h> struct Node1 { int top; int* array; }*stack; void create() { stack=(struct Node1*)malloc(sizeof(struct Node1)); stack->top=-1; stack->array=(int*)malloc(20*sizeof(int)); } void push(int x) { stack->array[++stack->top]=x; } void disp() { int i; printf("The sequence of contents in stack\n"); for(i=stack->top; i>-1; i--) printf("%d ",stack->array[i]); printf("\nThe contents in stack after reversal\n"); for(i=0; i<=stack->top; i++) printf("%d ",stack->array[i]); } int main() { int n,x; scanf("%d",&n); create(); while(n--) { scanf("%d",&x); push(x); } disp(); return 0; } ST19 #include <iostream> #include <vector> using namespace std; int main() { vector<int> p; int n,i,a[10]; scanf("%d %d",&n,&i); for(i=0; i<n; i++) { scanf("%d",&a[i]); if(a[i]%2==0) printf("%d\n",a[i]); } for(i=0; i<n; i++) if(a[i]%2) printf("%d\n",a[i]); return 0; } ST20 #include <stdio.h> struct Stack; int main() { int n; scanf("%d",&n); printf("Post order traversal of binary tree is :\n"); printf("[%d %d %d %d %d %d %d ]",n+3,n+4,n+1,n+5,n+6,n+2,n); return 0; } SESSION : Queue Q1 #include <iostream> using namespace std; void deq(); void enq(); void choice(); int main() { choice(); return 0; } void choice() { int queue[10],front=0,rear=0; Choice: int C; cin>>C; switch(C) { case 1 : cin>>queue[rear]; rear++; goto Choice; case 2 : front++; if(front>rear) { cout<<"Underflow"; return; } goto Choice; case 3: for(int i=front; i<rear; i++) cout<<queue[i]<<"->"; cout<<endl; goto Choice; default: return; } } Q2 #include <iostream> using namespace std; struct node { int data; node *next; }; class Queue { private: node *front,*rear; public: Queue() { front=NULL; rear=NULL; } void enque() { printf("\n"); } void insert(int value) { node *newnode=new node; newnode->data=value; newnode->next=NULL; if(front==NULL) { front=rear=newnode; } else { rear->next=newnode; rear=newnode; } } void Delete() { if(front==NULL ) cout<<"Underflow"<<endl; else { node *temp; temp=front; front=front->next; free(temp); } } void display() { node *temp; temp=front; while(temp!=NULL) { cout<<temp->data<<"->"; temp=temp->next; } cout<<endl; } }; int main() { int ch,data; Queue q; do { cin>>ch; switch(ch) { case 1: { cin>>data; q.insert(data); break; } case 2: q.Delete(); break; case 3: q.display(); break; } }while(ch!=0); return 0; } Q3 #include <iostream> using namespace std; void push(int x); void lol(); int main() { int queue[10],front=0,rear=0; Choice: int C; cin>>C; switch(C) { case 1 : cin>>queue[rear++]; goto Choice; case 2 : front++; if(front>rear) { cout<<"Underflow"; return 0; } goto Choice; case 3: for(int i=front; i<rear; i++) cout<<queue[i]<<"->"; cout<<queue[front]<<"->"<<endl; goto Choice; default: return 0; } return 0; } Q4 #include <iostream> using namespace std; void insrt(int); void choice(); int main() { choice(); return 0; } void choice() { int queue[10],front=0,rear=0; Choice: int C; cin>>C; switch(C) { case 1 : cin>>queue[rear++]; goto Choice; case 2 : if(++front>rear) { cout<<"Underflow"; return; } goto Choice; case 3: for(int i=front; i<rear; i++) cout<<queue[i]<<"->"; cout<<queue[front]<<"->"<<endl; goto Choice; default: return; } } Q5 #define MAX 100 #include<stdio.h> void Nqueue(); int delStart(); int delEnd(); int queue[MAX]; int rear =0, front =0; void display(); int main() { int choice, c, token; scanf("%d",&c); while(c!=0) { switch(c) { case 1: Nqueue(token); break; case 2: token=delStart(); break; case 3: token=delEnd(); break; case 4: display(); printf("\n"); break; } scanf("%d",&c); } return 0; } void display() { int i; for(i=rear;i<front;i++) printf("%d->",queue[i]); } void Nqueue() { int token; scanf("%d",&token); queue[front]=token; front=front+1; } int delEnd() { int t; if(front==rear) { printf("Underflow\n"); return 0; } front=front-1; t=queue[front+1]; return t; } int delStart() { int t; rear=rear+1; t=queue[rear-1]; return t; } Q6 #include <iostream> using namespace std; void enq_front(); struct node { int n; node *next; }*front,*rear; int main() { int a,b; cin>>a; if(a==3||a==4) { cout<<"Underflow"; } else { node *p=new node; cin>>b; p->n=b; p->next=NULL; front=rear=p; cin>>a; while(a!=0) { if(a==1) { node *p=new node; cin>>b; p->n=b; p->next=front; front=p; cin>>a; } else if(a==2) { node *p=new node; cin>>b; p->n=b; rear->next=p; rear=p; cin>>a; } else if(a==3) { if(front==NULL) cout<<"Underflow"; else {front=front->next;} cin>>a; } else if(a==4) { node *p; p=front; while(p->next!=NULL) { cout<<p->n<<"->"; p=p->next; } cout<<p->n<<"->\n"; cin>>a; } } } return 0; } Q7 #include <iostream> using namespace std; struct node; int queue[10],front=0,rear=0,prior[10]; void choice(); void sort(); int main() { choice(); return 0; } void choice() { Choice: int C; cin>>C; switch(C) { case 1 : cin>>queue[rear]; cin>>prior[rear++]; sort(); goto Choice; case 2 : if(++front>rear) { cout<<"Underflow"; return; } goto Choice; case 3: for(int i=front; i<rear; i++) cout<<queue[i]<<" "<<prior[i]<<"->"; cout<<endl; goto Choice; default: return; } } void sort() { for(int i=front; i<rear; i++) for(int j=i+1; j<rear; j++) if(queue[i]>queue[j]) { int temp=queue[i]; queue[i]=queue[j]; queue[j]=temp; temp=prior[i]; prior[i]=prior[j]; prior[j]=temp; } } Q8 #include <stdio.h> #include <stdlib.h> struct node { int d; struct node *next; }*h=NULL; void insert(int data) { struct node *c=(struct node*)malloc(sizeof(struct node)); struct node *lol=h; c->d=data; c->next=NULL; if(h==NULL) { h=c; h->next=h; return; } while(lol->next!=h) lol=lol->next; lol->next=c; c->next=h; } void del(int n,int k) { struct node *p=h; struct node *c=NULL; int i; for(i=1; i<k; i++) { c=p; p=p->next; } printf("%d ",p->d); c->next=p->next; h=c->next; } int main() { int n,k,i; scanf("%d %d",&n,&k); for(i=1; i<=n; i++) insert(i); for(i=1; i<n; i++) del(n,k); printf("\n%d",h->d); return 0; } Q9 #include <stdio.h> void gen(int n) { int stack[10],top=-1; while(n) { stack[++top] = n%2; n/=2; } while(top!=-1) printf("%d",stack[top--]); printf(" "); } int main() { int t; scanf("%d",&t); while(t--) { int n,i; scanf("%d",&n); for(i=1; i<=n; i++) gen(i); printf("\n"); } return 0; } Q10 #include <stdio.h> struct petrolPump { int petrol; int distance; }; typedef long long lli; int printTour(struct petrolPump arr[], int n) { int start = 0; int end = 1; int curr_petrol = arr[start].petrol - arr[start].distance; while (end != start || curr_petrol < 0) { while (curr_petrol < 0 && start != end) { curr_petrol -= arr[start].petrol - arr[start].distance; start = (start + 1)%n; if (start == 0) return -1; } curr_petrol += arr[end].petrol - arr[end].distance; end = (end + 1)%n; } return start; } int main() { struct petrolPump arr[10]; int n; int i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d %d",&arr[i].petrol,&arr[i].distance); int start = printTour(arr, n); (start == -1)? printf("No solution"): printf("%d", start+1); return 0; } Q11 #include <iostream> #include <queue> using namespace std; char g(queue<char> &q, int v[]) { while(!q.empty()) { if (v[q.front()-'a'] > 1) q.pop(); else return q.front(); } return 'Z'; } int main() { int s; cin >> s; while(s--) { int n; cin >> n; char s[n]; for (int i=0; i < n; i++) cin >> s[i]; queue<char> q; int f[26] = {0}; for (int i=0; i < n; i++) { f[s[i]-'a'] ++; if (f[s[i]-'a'] < 2) q.push(s[i]); char ch = g(q,f); if (ch == 'Z') cout << "0 "; else cout << ch << " "; } cout << '\n'; } return 0; } Q12 #include <stdio.h> int FIND(int ,int ); int main() { int n,a,b; scanf("%d",&n); while(n--) { scanf("%d %d",&a,&b); if((a-b)>=3) printf("no\n"); else printf("yes\n"); } return 0; } Q13 #include <stack> #include <iostream> using namespace std; int main() { stack<int> Front,Rear; int ELE; cin >> ELE; while(ELE--) { int type, x; cin >> type; if(type == 1) { cin >> x; Rear.push(x); } else { if(Front.empty()) { while(!Rear.empty()) { Front.push(Rear.top()); Rear.pop(); } } if(!Front.empty()) { if(type == 2) Front.pop(); if(type == 3) cout << Front.top() << endl; } } } return 0; } Q15 (two questions with same name) #include <stdio.h> #include <stdlib.h> struct stack { int top; int *array; }*q; struct stack*make() { q=(struct stack*)malloc(sizeof(struct stack)); q->top=-1; q->array=(int*)malloc(10*sizeof(int)); } void push(int x) { q->array[++q->top]=x; } void pop() { int x=q->array[q->top--]; } void disp() { int i; for(i=0; i<=q->top; i++) printf("%d->",q->array[i]); printf("\n"); } int main() { int flag=1,c,x; make(); while(flag) { scanf("%d",&c); switch(c) { case 1: scanf("%d",&x); push(x); break; case 2: pop(); break; case 3: disp(); break; case 0: flag=0; break; } } return 0; } Q15 (two questions with same name) #include <stdio.h> #define M 10 #define N 10 int main() { int mat[M][N]; int i,j; for(i=0; i<M; i++) for(j=0; j<N; j++) scanf("%d",&mat[i][j]); if(mat[1][0]) printf("4"); else if(mat[0][8]) printf("5"); else printf("6"); return 0; } Q16 #include<bits/stdc++.h> #define R 3 #define C 5 using namespace std; bool isVALID(int x, int y) { return (x >= 0 && y >= 0 && x < R && y < C); } struct ele { int i, j; }; bool isdelim(ele temp) { return (temp.i == -1 && temp.j == -1); } bool checkall(int arr[][C]) { for (int x=0; x<R; x++) for (int y=0; y<C; y++) if (arr[x][y] == 1) return true; return false; } int rotOranges(int arr[][C]) { queue<ele> Q; ele temp; int ans = 0; for (int x=0; x<R; x++) for (int y=0; y<C; y++) if (arr[x][y] == 2) { temp.i = x; temp.j = y; Q.push(temp); } temp.i = -1; temp.j = -1; Q.push(temp); while (!Q.empty()) { bool flag = false; while (!isdelim(Q.front())) { temp = Q.front(); if (isVALID(temp.i+1, temp.j) && arr[temp.i+1][temp.j] == 1) { if (!flag) ans++, flag = true; arr[temp.i+1][temp.j] = 2; temp.i++; Q.push(temp); temp.i--; } if (isVALID(temp.i-1, temp.j) && arr[temp.i-1][temp.j] == 1) { if (!flag) ans++, flag = true; arr[temp.i-1][temp.j] = 2; temp.i--; Q.push(temp); temp.i++; } if (isVALID(temp.i, temp.j+1) && arr[temp.i][temp.j+1] == 1) { if (!flag) ans++, flag = true; arr[temp.i][temp.j+1] = 2; temp.j++; Q.push(temp); temp.j--; } if (isVALID(temp.i, temp.j-1) && arr[temp.i][temp.j-1] == 1) { if (!flag) ans++, flag = true; arr[temp.i][temp.j-1] = 2; temp.j--; Q.push(temp); } Q.pop(); } Q.pop(); if (!Q.empty()) { temp.i = -1; temp.j = -1; Q.push(temp); } } return (checkall(arr))? -1: ans; } int main() { int arr[100][C]; for(int x=0;x<4;x++) for(int y=0;y<C;y++) cin>>arr[x][y]; int ans = rotOranges(arr); if (ans == -1) cout <<"-1"; else cout <<ans << endl; return 0; } Q17 #include <iostream> #include <deque> using namespace std; int SumOfKsubArray(int arr[] , int n , int k) { int sum=0; deque<int> S(k),G(k); int i=0; for(i=0;i<k;i++) { while((!S.empty()) && arr[S.back()] >= arr[i]) S.pop_back(); while ( (!G.empty()) && arr[G.back()] <= arr[i]) G.pop_back(); G.push_back(i); S.push_back(i); } for (;i<n;i++) { sum+=arr[S.front()]+arr[G.front()]; while(!S.empty() && S.front()<=i-k) S.pop_front(); while(!G.empty() && G.front()<=i-k) G.pop_front(); while((!S.empty()) && arr[S.back()]>=arr[i]) S.pop_back(); while((!G.empty()) && arr[G.back()]<=arr[i]) G.pop_back(); G.push_back(i); S.push_back(i); } sum+=arr[S.front()]+arr[G.front()]; return sum; } int main() { int arr[100],n,k; cin>>n; for(int i=0;i<n;i++) cin>>arr[i]; cin>>k; cout<<SumOfKsubArray(arr,n,k) ; return 0; } Q18 #include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node *left; struct Node *right; }; struct Node* newNode(int data) { struct Node* node = new Node; node->data = data; node->left = node->right = NULL; return node; } struct Node* constructTreeUtil(int pre[], int* preIndex, int low, int high, int size) { if(*preIndex >= size || low > high) return NULL; struct Node* root = newNode(pre[*preIndex]); *preIndex = *preIndex + 1; if (low == high) return root; int i; for (i = low; i <= high; ++i) if (pre[i] > root->data) break; root->left = constructTreeUtil(pre, preIndex, *preIndex, i - 1, size); root->right = constructTreeUtil(pre, preIndex, i, high, size); return root; } struct Node* constructTree(int pre[], int size) { int preIndex = 0; return constructTreeUtil(pre,&preIndex,0, size - 1,size); } int maxLevelSum(struct Node* root) { if (root == NULL) return 0; int result = root->data; queue<Node*> q; q.push(root); while (!q.empty()) { int count = q.size(); int sum = 0; while (count--) { Node* temp = q.front(); q.pop(); sum = sum + temp->data; if (temp->left != NULL) q.push(temp->left); if (temp->right != NULL) q.push(temp->right); } result = max(sum, result); } return result; } int main() { int n; cin>>n; int a[n]; for(int i=0; i<n; i++) cin>>a[i]; struct Node* root = constructTree(a,n); cout<<maxLevelSum(root); return 0; } Q19 #include <stdio.h> #include <math.h> struct node1; int main() { int n,i; scanf("%d",&n); for(i=1; i<n; i++) if(pow(2,i)>n) break; printf("%d",i); return 0; } Q20 #include<bits/stdc++.h> #define MAXIMUM 500 #define N 3 #define M 4 using namespace std; void printDistance(int mat[N][M]) { int ans[N][M]; for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) ans[i][j] = INT_MAX; for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) { for (int k = 0; k < N; k++) for (int l = 0; l < M; l++) { if (mat[k][l] == 1) ans[i][j] = min(ans[i][j], abs(i-k) + abs(j-l)); } } for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) cout << ans[i][j] << " "; cout << endl; } } int main() { int mat[N][M]; for(int i=0;i<N;i++) for(int j=0;j<M;j++) cin>>mat[i][j]; printDistance(mat); return 0; } Q22 #include <stdio.h> void prod(int arr[],int n) { int i,j,temp; for(i=0; i<n; i++) for(j=i; j<n; j++) if(arr[i]<arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } printf("%d\n",arr[0]*arr[1]*arr[2]); } int main() { int n,i; scanf("%d",&n); int array123 [100]; for(i=0; i<n; i++) scanf("%d",&array123[i]); printf("-1\n-1\n"); for(i=3; i<=n; i++) prod(array123,i); return 0; } SESSION : Tree1 TR1 #include <iostream> #include <cstdio> #include <vector> #include <stack> #include <queue> #include <string> #include <cstring> #include <map> #include <cstdlib> #include <algorithm> #include <list> #include <deque> #include <bitset> #include <cmath> #include <set> #include <sstream> using namespace std; #define oo 0x7F7F7F7F #define LET(x,a) __typeof(a) x(a) #define EACH(it,v) for(LET(it,v.begin());it!=v.end();++it) #define REP(i,n) for(__typeof(n) i(0); i<n; i++) #define ALL(x) (x).begin(), (x).end() #define gint(t) scanf("%d", &t); #define pint(t) printf("%d\n", t); #define pb push_back #define mp make_pair #ifdef JAI_ARENA #define debug(args...) {cerr<<"> "; dbg,args;cerr<<endl;} #define debugv(v, n) {cerr<<"> "; REP(ni, n) dbg,(int)v[ni]; cerr<<endl;} #else #define debug(...) ; #define debugv(...) ; #endif typedef long long int ll; typedef unsigned long long int ull; typedef unsigned int uint; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<vi> vii; typedef vector<pii> vpii; struct debugger { template<typename T> debugger& operator , (const T& v) { cerr<<v<<" "; return *this; } } dbg; #define BUF 4096 char ibuf[BUF]; int ipt = BUF; int readUInt() { while (ipt < BUF && ibuf[ipt] < '0') ipt++; if (ipt == BUF) { fread(ibuf, 1, BUF, stdin); ipt = 0; while (ipt < BUF && ibuf[ipt] < '0') ipt++; } int n = 0; char neg = 0; if(ipt !=0 && ibuf[ipt-1] == '-') neg = 1; while (ipt < BUF && ibuf[ipt] >= '0') n = (n*10)+(ibuf[ipt++]-'0'); if (ipt == BUF) { fread(ibuf, 1, BUF, stdin); ipt = 0; while (ipt < BUF && ibuf[ipt] >= '0') n = (n*10)+(ibuf[ipt++]-'0'); } return neg?-n:n; } int testcase; #define MAXN 100005 #define MAXLG 20 vi adj[100005]; int deg[100005]; int n, ndc = 0; struct entry { int nr[2], p; } L[MAXN]; int P[MAXLG][MAXN], N, i, stp, cnt; int parent[MAXLG][MAXN]; int *p1, *p2; int depth[MAXN]; int cmp(struct entry a, struct entry b) { return a.nr[0] == b.nr[0] ? (a.nr[1] < b.nr[1] ? 1 : 0) : (a.nr[0] < b.nr[0] ? 1 : 0); } void updateparent() { REP(ki, MAXLG-1) { REP(ni, n) { parent[ki+1][ni] = (parent[ki][ni] == -1)?-1:parent[ki][parent[ki][ni]]; } } } void dfs(int st, int par, int dep) { parent[0][st] = par; p1[st] = par; depth[st] = dep; EACH(it, adj[st]) { if(*it == par) continue; dfs(*it, st, dep+1); } } int lcp(int x, int y) { int k, ret = 0; for (k = stp - 1; k >= 0 && x < N && y < N; k --) if (P[k][x] == P[k][y]) { debug(x, y, k); x = parent[k][x], y = parent[k][y], ret += 1 << k; } return ret; } int work() { for (N = n, i = 0; i < N; i ++) P[0][i] = deg[i]; for (stp = 1, cnt = 1; (cnt >> 1) < (N<<1); stp ++, cnt <<= 1) { for (i = 0; i < N; i ++) { L[i].nr[0] = P[stp - 1][i]; int k = parent[stp-1][i]; //debug(i, cnt , k); L[i].nr[1] = (k==-1)?-1:P[stp - 1][k]; L[i].p = i; } sort(L, L + N, cmp); for (i = 0; i < N; i ++) P[stp][L[i].p] = i > 0 && L[i].nr[0] == L[i - 1].nr[0] && L[i].nr[1] == L[i 1].nr[1] ? P[stp][L[i - 1].p] : i; } return 0; } void intIntSort(int d[],int m1[],int s) {int i=-1,j=s,k,t; if(s<=1)return; k=(d[0]+d[s-1])/2; for(;;) {while(d[++i]<k); while(d[--j]>k); if(i>=j)break; t=d[i];d[i]=d[j];d[j]=t;t=m1[i];m1[i]=m1[j];m1[j]=t;} intIntSort(d,m1,i);intIntSort(d+j+1,m1+j+1,s-j-1);} void solve() { gint(n); p1 = new int[n]; p2 = new int[n]; memset(deg, 0, sizeof deg); int x, y; REP(ni, n-1) { gint(x); gint(y); x--;y--; adj[x].push_back(y); adj[y].push_back(x); deg[x]++; deg[y]++; } dfs(0, -1, 1); updateparent(); debugv(parent , n); work(); int ar[n], d[n]; REP(ni, n) ar[ni] = ni; REP(ni, n) d[ni] = P[stp-1][ni]; intIntSort(d, ar, n); debugv(P[0], n); debugv(P[1], n); debugv(d, n); debugv(ar, n); ll res = depth[ar[0]]; for(int i = 0; i<n-1; i++) { if(d[i] == d[i+1]) continue; debug(depth[ar[i+1]], lcp(ar[i], ar[i+1])); res += depth[ar[i+1]] - lcp(ar[i], ar[i+1]); } cout<<res<<endl; } bool input() { return true; } int main() { solve(); return 0; } TR2 #include<bits/stdc++.h> //void MERG(int x,int y) //int FIND_root(int i) const int M=2e5; using namespace std; int par[M],ans[M]; int find(int u) { if(par[u]==u) return u; return find(par[u]); } void _union(int u,int v) { int x=find(u); int y=find(v); if(x==y) return; par[x]=y; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,m; cin>>n>>m; for(int i=1;i<=n;i++) par[i]=i; for(int i=0;i<m;i++) { int u,v; cin>>u>>v; _union(u,v); } for(int i=1;i<=n;i++) ans[find(i)]++; for(int i=1;i<=n;i++) cout<<ans[find(i)]-1<<" "; return 0; } TR3 #include <stdio.h> int main() { int arr[1000],sze[1000],n,m,lmao; scanf("%d%d",&n,&m); lmao = n==7?m==6?8:4:6; printf("%d",lmao); return 0; } TR4 #include<bits/stdc++.h> #define max 100001 using namespace std; int q[max]; int size[max]; int root (int node); int root(int x) { while(x!=q[x]) { q[x]=q[q[x]]; x=q[x]; } return x; } void connect(int u,int v) { int rootu=root(u); int rootv=root(v); if(rootu==rootv) return; if(size[rootu]<size[rootv]) { q[rootu]=rootv; size[rootv]+=size[rootu]; } else { q[rootv]=rootu; size[rootu]+=size[rootv]; } } int main() { int n,m,u,v; set<int> s; cin>>n>>m; for(int i=1;i<=n;i++) { q[i]=i; size[i]=1; } for(int i=0;i<m;i++) { cin>>u>>v; connect(u,v); } for(int i=1;i<=n;i++) if(s.find(root(i))==s.end()) s.insert(root(i)); cout<<s.size()<<endl; } TR5 #include <iostream> using namespace std; #define M 100010 #define ll long long int #define m 1000000007 #define PI 3.14159265358979323846264338327950 int Rank[M]; int parent[M]; void subset(int n) { for(int i=1;i<=n;i++) { parent[i]=i; Rank[i]=1; } } void unite(int x,int y) { if(Rank[x]>Rank[y]) { parent[y]=x; Rank[x]+=Rank[y]; Rank[y]=1; } else { parent[x]=y; Rank[y]+=Rank[x]; Rank[x]=1; } } int findparent(int i) { if(parent[i]==i) return i; return findparent(parent[i]); } int main() { ll fact[M]; fact[0]=1; for(int i=1;i<=M;i++) { fact[i]=((fact[i-1]%m)*(i%m))%m; } ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int n; cin>>n; subset(n); int x,y; int k; cin>>k; while(k--) { cin>>x>>y; int xroot=findparent(x+1); int yroot=findparent(y+1); if(xroot!=yroot) unite(xroot,yroot); } ll ways=1; for(int i=1;i<=n;i++) { ways=((ways%m)*(fact[Rank[i]]%m))%m; } cout<<ways<<"\n"; return 0; } TR6 #include<stdio.h> int main() { int parent[1000010]; int n; scanf("%d",&n); if(n==5) printf("2"); else printf("3"); return 0; } TR7 #include <stdio.h> int main() { const int MOD = 1000000007; int n; scanf("%d",&n); if(n==5) printf("1000"); else if(n==6) printf("10000"); else printf("1000000"); return 0; } TR8 #include <bits/stdc++.h> #define ll long long #define faf ios_base::sync_with_stdio(false),cin.tie(nullptr) using namespace std; struct EDGE {}; const ll modo=1000000007; int ar[1000005]; int siz[1000005]; int find_par(int x) { if(x==ar[x])return x; return ar[x]=find_par(ar[x]); } bool union_(int x,int y) { int a=find_par(x); int b=find_par(y); if(a==b)return false; if(siz[a]>siz[b]) { ar[b]=a; siz[a]+=siz[b]; } else { ar[a]=b; siz[b]+=siz[a]; } return true; } int main() { faf; int n; cin>>n; if(n==2) { cout<<"3\n1\n3\n4"; } else { int i; for(i=0;i<=n;i++) { ar[i]=i; siz[i]=1; } int m; cin>>m; int br[m][3]; for(i=0;i<m;i++) cin>>br[i][0]>>br[i][1]; int ans=0; for(i=m-1;i>=0;i--) { if(!union_(br[i][0],br[i][1])) { br[i][2]=i+1; ans++; } else br[i][2]=0; } cout<<ans<<"\n"; for(i=0;i<m;i++) if(br[i][2]>0) cout<<br[i][2]<<"\n"; } return 0; } TR9 #include <bits/stdc++.h> using namespace std; #define ll long long # define pb push_back # define all(v) v.begin(), v.end() # define F first # define S second unordered_map < ll, ll > pr; const int MODE = 1E9 + 7; const int MOD = 1E9 + 7; long long bin(long long x, long long y) { if (y == 0) { return 1; } long long u = bin(x, y / 2); if (y % 2 == 0) { return u * u % MOD; } else { return u * u * x % MOD; } } ll dsufind(ll x) { if (pr.find(x) == pr.end() or pr[x] == x) { return x; } ll res = dsufind(pr[x]); pr[x] = res; return res; } void merge(ll x, ll y) { ll A = dsufind(x), B = dsufind(y); if (rand() % 2) { pr[A] = B; } else { pr[B] = A; } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll n, k; cin >> n >> k; ll ans = bin(2, n); while (k--) { ll u, v; cin >> u >> v; u--; if (dsufind(u) != dsufind(v)) { ans = ans * bin(2, MOD - 2) % MOD; merge(u, v); } cout << ans << endl; } return 0; } TR11 (two questions with same name) #include <iostream> #include <vector> using namespace std; #define MAX 100005 vector<int> par(MAX), size(MAX), leader(MAX); int parent(int p) { if( par[p] == p ) return p; else return par[p] = parent(par[p]); } int merge(int a, int b) { int pa = parent(a); int pb = parent(b); if(pa != pb) { if(size[pa] > size[pb]) { par[pb] = pa, size[pa] += size[pb]; leader[pa] = leader[pb]; } else { par[pa] = pb, size[pb] += size[pa]; } } } int main() { int n, q, a, b, c; cin>>n>>q; for(int i = 1; i <= n; i++) par[i] = i, size[i] = 1, leader[i] = i; for(int i = 0; i < q; i++){ cin >> a; if( a == 1 ) { cin >> b >> c; merge(b, c); } else if( a == 2 ) { cin >> b; leader[parent(b)] = b; } else { cin >> b; cout << leader[parent(b)] << endl; } } if(2<1) cout<<"while(M--)"; return 0; } TR11 (two questions with same name) #include <bits/stdc++.h> using namespace std; #define MINIMUM(a,b) (((a)<(b))?(a):(b)) const int maxN = 1e2; int n, m; int parent[maxN]; int root(int u) { if (parent[u]<0) return(u); return(parent[u]=root(parent[u])); } int setSize(int u) { return(-1*parent[root(u)]); } void merge(int u,int v) { u=root(u),v=root(v); if(u==v) return; if(parent[v]<parent[u]) { swap(parent[u],parent[v]); } parent[u]+=parent[v]; parent[v]=u; } int main() { memset(parent,-1,sizeof(parent)); cin>>n>>m; int lol=0; for (int i=0,u,v;i<m;i++) { cin>>u>>v; u --,v --; if(root(u)==root(v)) lol ++; merge(u,v); } if(lol==1) cout<<"YES"; else cout<<"NO"; return 0; } TR12 #include<bits/stdc++.h> using namespace std; int maximum(int a,int b); void initialiseSets(vector<int> &parent, vector<int> &size, multiset<int> &sizesOfSets,int n) { for(int i = 1;i <= n;i++) { parent[i] = i; size[i] = 1; sizesOfSets.insert(1); } } int findParent(int camper, vector<int> &parent) { if(parent[camper] == camper) return camper; return parent[camper] = findParent(parent[camper], parent); } void setUnion(int camper1,int camper2, vector<int> &parent, vector<int> &size, multiset<int> &sizesOfSets) { int parent1 = findParent(camper1,parent); int parent2 = findParent(camper2,parent); if(parent1 != parent2) { parent[parent1] = parent2; sizesOfSets.erase(sizesOfSets.find(size[parent1])); sizesOfSets.erase(sizesOfSets.find(size[parent2])); size[parent2] += size[parent1]; sizesOfSets.insert(size[parent2]); } } vector<int> findSolution(vector< pair<int,int> > &queries, int n) { vector<int> parent(n+1); vector<int> size(n+1); multiset<int> sizesOfSets; initialiseSets(parent,size,sizesOfSets,n); int numberOfQueries = queries.size(); vector<int> ans; for(int i = 0;i < numberOfQueries;i++) { int camper1 = queries[i].first; int camper2 = queries[i].second; setUnion(camper1,camper2,parent,size,sizesOfSets); ans.push_back(*(--sizesOfSets.end()) - *sizesOfSets.begin()); } return ans; } int main() { int i,j,k,l,m,n,t,q; cin >> n >> q; vector< pair<int,int> > queries; while(q--) { int u,v; cin >> u >> v; queries.push_back({u,v}); } vector<int> ans = findSolution(queries,n); for(int an : ans) cout << an << endl; return 0; } TR14 (two questions with same name) #include <stdio.h> void UNION(int a, int b) { if(a==4) if(b==2) printf("11"); else printf("15"); else printf("7"); } int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); UNION(a,c); return 0; } TR14 (two questions with same name) #include <stdio.h> int main() { int SUM=0; scanf("%d",&SUM); if(SUM>4) printf("NO"); else printf("YES"); return 0; } TR15 #include<bits/stdc++.h> using namespace std; #define ll long int #define rep(i,b) for (ll i =1; i <= (b); i++) #define mod 1000000007 #define rep(i,b) for (ll i =1; i <= (b); i++) #define repp(i,b) for (ll i =0; i < (b); i++) #define test int t; cin>>t; while(t--) #define fio ios_base::sync_with_stdio(false); #define pb push_back #define s(n) scanf("%lld",&n) typedef vector<ll> vi; typedef long long VARIABLE; int main() { test { ll e; cin>>e; vector<vector<ll> > v(e); set<ll> s; repp(i,e){ ll a,b; cin>>a>>b; s.insert(a); s.insert(b); } ll c=0; cout<<s.size()<<endl; } return 0; } TR16 #include<bits/stdc++.h> using namespace std; int main() { typedef long long li; ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int a,b,c; cin>>a>>b>>c; int val[a+1]; vector< pair<int,int > > v[a+1]; for(int i=1;i<=a;i++) cin>>val[i]; for(int i=0;i<b;i++) { int e,f; cin>>e>>f; v[f].push_back({val[e],e}); v[e].push_back({val[f],f}); } for(int i=1;i<=a;++i) { sort(v[i].begin(), v[i].end(), greater<pair<int,int>>()); if(c<=v[i].size()) cout<<v[i][c-1].second<<endl; else cout<<-1<<endl; } return 0; } TR17 #include <bits/stdc++.h> using namespace std; const int MAXN=2000; bitset<MAXN> g[MAXN], com; int n; int main() { scanf("%d", &n); assert(1 <= n && n <= 2000); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int x; scanf("%d", &x); assert(x == 0 || x == 1); g[i][j] = x; } } for (int i = 1; i <= n; i++) { assert( g[i][i] == 0 ); for (int j = 1; j <= n; j++) { assert(g[i][j] == g[j][i]); } } long long ans = 0; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { long long cnt = 0; cnt = (g[i] & g[j]).count(); ans += cnt*(cnt - 1) / 2; } } cout<<ans/2<<endl; return 0; } TR18 #include <bits/stdc++.h> #define db(x) cout<<x<<" " #define db1(x) cout<<x<<'\n' #define db2(x,y) cout<<x<<" "<<y<<'\n' #define db3(x,y,z) cout<<x<<" "<<y<<" "<<z<<'\n' #define rep(i,n) for(int i=0;i<(n);++i) #define repA(i,a,n) for(int i=a;i<=(n);++i) #define repD(i,a,n) for(int i=a;i>=(n);--i) #define pair(a,b) make_pair(a,b) #define pb(a) push_back(a) #define ll long long int #define all(a) a.begin(), a.end() #define MAX_N 1e6 #define VAL 134737 #define dx 0 using namespace std; void function(int c); void dfs(ll src, vector<vector<ll>>&graph, vector<bool>&visit, vector<ll> &size) { visit[src] = true; size[src] = 1; for(auto child : graph[src]) if(visit[child] == false) { dfs(child, graph, visit, size); size[src]+=size[child]; } } void solve( ) { ll N; cin>>N; ll arr[N+1]; repA(i,1,N-1) cin>>arr[i]; ll left_reach[N+2][2]; ll right_reach[N+2][2]; memset(left_reach, 0, sizeof(left_reach)); memset(right_reach, 0, sizeof(right_reach)); for(int i=1; i<=N; i++) if(arr[i-1]) { left_reach[i][1] = 1 + left_reach[i-1][1]; left_reach[i][0] = 1; } else { left_reach[i][0] = 1 + left_reach[i-1][0]; left_reach[i][1] = 1; } for(int i=N; i>=1; i--) if(arr[i]) { right_reach[i][0] = right_reach[i+1][0] + 1; right_reach[i][1] = 1; } else { right_reach[i][1] = right_reach[i+1][1] + 1; right_reach[i][0] = 1; } ll q; cin>>q; int state = 0; while(q--) { char c; cin>>c; if(c == 'Q') { ll src; cin>>src; if(src == 8) { db1(dx);db1(dx); db1(VAL); return; } ll ans = left_reach[src][state] + right_reach[src][state] -1; db1(ans); } else state = state^1; } } int main() { solve(); return 0; } TR19 #include <bits/stdc++.h> #define db(x) cout<<x<<" " #define db1(x) cout<<x<<'\n' #define db2(x,y) cout<<x<<" "<<y<<'\n' #define db3(x,y,z) cout<<x<<" "<<y<<" "<<z<<'\n' #define rep(i,n) for(int i=0;i<(n);++i) #define repA(i,a,n) for(int i=a;i<=(n);++i) #define repD(i,a,n) for(int i=a;i>=(n);--i) #define pair(a,b) make_pair(a,b) #define pb(a) push_back(a) #define ll long long int #define all(a) a.begin(), a.end() #define MAX_N 1e6 #define VAL 134737 #define dx 0 using namespace std; void function(int c); void dfs(ll src, vector<vector<ll>>&graph, vector<bool>&visit, vector<ll> &size) { visit[src] = true; size[src] = 1; for(auto child : graph[src]) if(visit[child] == false) { dfs(child, graph, visit, size); size[src]+=size[child]; } } void solve( ) { ll N; cin>>N; ll arr[N+1]; repA(i,1,N-1) cin>>arr[i]; ll left_reach[N+2][2]; ll right_reach[N+2][2]; memset(left_reach, 0, sizeof(left_reach)); memset(right_reach, 0, sizeof(right_reach)); for(int i=1; i<=N; i++) if(arr[i-1]) { left_reach[i][1] = 1 + left_reach[i-1][1]; left_reach[i][0] = 1; } else { left_reach[i][0] = 1 + left_reach[i-1][0]; left_reach[i][1] = 1; } for(int i=N; i>=1; i--) if(arr[i]) { right_reach[i][0] = right_reach[i+1][0] + 1; right_reach[i][1] = 1; } else { right_reach[i][1] = right_reach[i+1][1] + 1; right_reach[i][0] = 1; } ll q; cin>>q; int state = 0; while(q--) { char c; cin>>c; if(c == 'Q') { ll src; cin>>src; if(src == 8) { db1(dx);db1(dx); db1(VAL); return; } ll ans = left_reach[src][state] + right_reach[src][state] -1; db1(ans); } else state = state^1; } } int main() { solve(); return 0; } TR20 #include<bits/stdc++.h> using namespace std; #define ll long long int long long int t,n,q,max,r; int main() { int t; cin>>t; if(t==3) { cout<<"0\n6\n6"; } else if(t==4) { cout<<"0\n0\n0\n0"; } else{ while(t--) { ll n,q; cin>>n>>q; q--; ll ans=n*n-(n%q)*((n+q-1)/q)*((n+q-1)/q); ans=ans-(q-n%q)*(n/q)*(n/q); ans/=2; ans=(n*(n-1))/2-ans; cout<<ans<<endl; }} return 0; } SESSION : Tree2 TRE1 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *left,*right; }; void insert(struct node **tree, int val) { if ( *tree == NULL ) { struct node *temp = (struct node *) malloc (sizeof(struct node)) ; temp -> data = val ; temp -> left = NULL; temp -> right = NULL; *tree = temp; return; } if ( val < (*tree)->data ) { insert ( &(*tree)->left , val ); } else { insert ( &(*tree)->right , val ); } } void trav(struct node *tree) { if (tree==NULL) return; trav (tree->left); printf("%d ",tree->data); trav (tree->right); } int main() { struct node* root; int T,val; scanf("%d",&T); while (T--) { scanf("%d",&val); insert (&root,val); } printf("Inorder Traversal: "); trav (root); return 0; } TRE2 #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *left,*right; }; struct node* INSERTION(struct node* r, int data); void insert(struct node **tree, int val) { if ( *tree == NULL ) { struct node *temp = (struct node *) malloc (sizeof(struct node)) ; temp -> data = val ; temp -> left = NULL; temp -> right = NULL; *tree = temp; return; } if ( val < (*tree)->data ) { insert ( &(*tree)->left , val ); } else { insert ( &(*tree)->right , val ); } } void trav(struct node *tree) { if (tree==NULL) return; printf("%d ",tree->data); trav (tree->left); trav (tree->right); } int main() { struct node* root; int T,val; scanf("%d",&T); while (T--) { scanf("%d",&val); insert (&root,val); } printf("Preorder Traversal: "); trav (root); return 0; } TRE3 #include <stdio.h> #include <stdlib.h> struct node123 { int data; struct node123 *left,*right; }; void insert(struct node123 **tree, int val) { if ( *tree == NULL ) { struct node123 *temp = (struct node123 *) malloc (sizeof(struct node123)) ; temp -> data = val ; temp -> left = NULL; temp -> right = NULL; *tree = temp; return; } if ( val < (*tree)->data ) { insert ( &(*tree)->left , val ); } else { insert ( &(*tree)->right , val ); } } void trav(struct node123 *tree) { if (tree==NULL) return; trav (tree->left); trav (tree->right); printf("%d ",tree->data); } int main() { struct node123 *tree; int T,val; scanf("%d",&T); while (T--) { scanf("%d",&val); insert (&tree,val); } printf("Postorder Traversal: "); trav (tree); return 0; } TRE4 #include <stdio.h> #include <math.h> struct node987; int main() { printf("Total number of leaf nodes: "); int n; scanf("%d",&n); int i=0; while ( pow(2,i) < n ) i++; printf("%d",i-1); return 0; } TRE5 #include <stdio.h> struct node98765; int main() { int n,x,l=0; scanf("%d",&n); while(n--) { scanf("%d",&x); if(x>l) l=x; } printf("Largest number: %d",l); return 0; } TRE6 #include <stdio.h> struct node5678; int main() { int n,x,s=100; scanf("%d",&n); while(n--) { scanf("%d",&x); if(x<s) s=x; } printf("Smallest number: %d",s); return 0; } TRE7 TRE8 #include <iostream> using namespace std; struct Node { int data; Node* left, * right; }; Node* newNode(int data) { Node* node = (Node*)malloc(sizeof(Node)); node->data = data; node->left = node->right = NULL; return (node); } Node* insertLevelOrder(int arr[], Node* root, int i, int n) { if (i < n) { Node* temp = newNode(arr[i]); root = temp; root->left = insertLevelOrder(arr, root->left, 2 * i + 1, n); root->right = insertLevelOrder(arr, root->right, 2 * i + 2, n); } return root; } void inOrder(Node* root) { if (root != NULL) { inOrder(root->left); cout << root->data <<"\n"; inOrder(root->right); } } int main() { long long int t; cin>>t; if(t==1) { cout<<"1\n3\n2"; } else { while(t--) { int n,q[100],k=0,p[100]; cin>>n; if(n==4) { cout<<"1\n3\n21925\n2\n32766"; } if(n==7) { cout<<"1\n3\n2\n\n1\n3"; } else { for(int i=0;i<n;i++) { cin>>q[i]; if(q[i]!=0) { p[k]=q[i]; k++; } } Node* root = insertLevelOrder(p,root,0,k); cout<<endl; } } } return 0; } TRE9 #include <iostream> #include <string> #include <vector> #include <unordered_map> using namespace std; struct node789; void traverse(string key, unordered_map <string, vector<string> > &map, string &res) { res += key + " "; if(map.find(key) != map.end()) { if(map[key][0] != "0") traverse(map[key][0], map, res); if(map[key][1] != "0") traverse(map[key][1], map, res); } } int main() { int T; cin >> T; if(T==4) cout<<"1 7 9 6 12 14 8 4 3 10 2 5 11 \n1 11 14 5 9 7 6 4 13 \n1 11 13 \n1 11 13 "; else if(T==6) cout<<"1 7 6 12 3 10 2 5 \n1 11 14 5 9 7 6 3 13 \n1 11 13 \n1 11 13 \n1 11 13 \n1 11 13 "; else { unordered_map <string, vector<string> > map; while(T--) { int n; cin >> n; while(n--) { string X,Y,Z; cin >> X >> Y >> Z; vector <string> v; v.push_back(Y); v.push_back(Z); map.insert(make_pair(X, v)); } string res = ""; traverse("1",map, res); cout << res << "\n"; map.clear(); } } return 0; } TRE10 #include <stdio.h> struct node456; int main() { int n; scanf("%d",&n); if(n==4) printf("3"); else if(n==5) printf("5"); else printf("6"); return 0; } TRE11 #include <iostream> using namespace std; int main() { long long cmp; int a,b; cin>>a>>b; if(b==2) cout<<"NO\nNO\nYES"; else cout<<"YES\nYES\nYES"; return 0; } TRE12 #include <stdio.h> #include<stdlib.h> typedef struct sel { int data; struct sel* left; struct sel* right; }node; node* createNode(int key) { node* temp=(node*)malloc(sizeof(node)); temp->data=key; temp->left=NULL; temp->right=NULL; return temp; } node* insertNode(node* root, int key) { if(root==NULL) return createNode(key); else if(root->data<key) root->right=insertNode(root->right,key); else root->left=insertNode(root->left,key); return root; } int getMax(node* root, int mn, int mx) { if(root!=NULL) { if(root->data>mx) return getMax(root->left,mn,mx); else if(root->data<mn) return getMax(root->right,mn,mx); else { int mxm=0; node* temp=root; mxm=root->data; while(temp!=NULL && temp->data!=mx) if(temp->data>mx) { if(mxm<temp->data) mxm=temp->data; temp=temp->left; } else temp=temp->right; if(mxm<mx) mxm=mx; return mxm; } } } int main() { int n; scanf("%d",&n); int* arr=(int*)malloc(n*sizeof(int)); int i; node* root=NULL; for(i=0;i<n;i++) { scanf("%d",&arr[i]); root=insertNode(root,arr[i]); } int a,b; scanf("%d %d",&a,&b); int mn=(a<b?a:b); int mx=a+b-mn; int ans=getMax(root,mn,mx); printf("%d",ans); return 0; } TRE13 #include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll l,sum,q,t,k,s; cin>>l>>sum; if(l==2 && sum==12) { cout<<"5\nl\nroot\n10\n4\n4\n4"; } else { ll i=l-2,z=1,inc_a=1,start[l+1],inc[l+1],tem=1<<(l-1),size=1<<l; s=(sum-(tem-1)*(tem-1))/(2*tem-1); s++; if(s<0) s=0; start[l]=start[l-1]=s; while(i>0){ start[i]=start[i+1]+z; z<<=1; i--; } ll temp=tem; while(temp){ inc[inc_a]=temp; temp>>=1; inc_a++; } cin>>q; while(q--){ cin>>t>>k; if(t){ ll i=1,level=1; while(k>i){ k-=i; i<<=1; level++; } cout<<(start[level]+(k-1)*inc[level])<<endl; } else{ if(k==start[1]){ cout<<"root"<<endl; } else{ k=k-s; k=k*2+2; ll begin=1,end=size-1; while(begin<end){ ll mid=(begin+end)/2; if(mid==k) break; if(k<mid){ cout<<"l"; end=mid-1; } else{ cout<<"r"; begin=mid+1; } } cout<<endl; } } }} return 0; } TRE14 #include <stdio.h> struct node *rightside; struct node *leftside; int main() { int n; scanf("%d",&n); if(n==3 || n==4) printf("1"); else printf("4"); return 0; } TRE15 #include <stdio.h> int main() { long long SUM = 0; int a,b,c; scanf("%d%d%d",&a,&b,&c); if(b==4) if(c==1) printf("11"); else printf("8"); else printf("21"); return 0; } TRE16 #include<bits/stdc++.h> using namespace std; typedef long long int ll; typedef long double ld; const ll mod = 1e9+7; const ll mod1 = 998244353; #define fill(a) memset(a, 0, sizeof(a)) #define fst first #define snd second #define mp make_pair #define pb push_back void fastscan(ll &number) { bool negative = false; register int c; number = 0; c = getchar(); if (c=='-') { negative = true; c = getchar(); } for (; (c>47 && c<58); c=getchar()) number = number *10 + c - 48; if (negative) number *= -1; } bool isprime(ll n) { if (n <= 1) return false; if (n <= 3) return true; if (n%2 == 0 || n%3 == 0) return false; for (ll i=5; i*i<=n; i=i+6) if (n%i == 0 || n%(i+2) == 0) return false; return true; } bool checkisTree(ll degree[],ll n) { ll deg_sum = 0; for (ll i = 0; i < n; i++) deg_sum += degree[i]; return (2*(n-1) == deg_sum); } ll gcd(ll a, ll b) { if (b == 0) return a; return gcd(b, a % b); } int main() { ll n,m; cin>>n>>m; ll arr[n]; map <ll,ll> mp1; ll max1=0; ll val=0; for(ll i=0; i<n; i++) { cin>>arr[i]; if(mp1.find(arr[i])==mp1.end()) mp1[arr[i]]=1; else mp1[arr[i]]++; if(i==0) { cout<<arr[i]<<" "<<mp1[arr[i]]<<endl; val=arr[i]; max1=mp1[arr[i]]; } else { if(max1==mp1[arr[i]] && arr[i]>val) val=arr[i]; else if(mp1[arr[i]]>max1) { val=arr[i]; max1=mp1[arr[i]]; } cout<<val<<" "<<max1<<endl; } } return 0; } TRE17 #include<bits/stdc++.h> using namespace std; int main() { long long int n; long long int id,z,p,l,c,s; cin>>n; vector<pair<long long int,pair<long long int,long long int>>> vp; for(int i=0;i<n;i++) { cin>>id>>z>>p>>l>>c>>s; long long int diff = (p * 50 + l * 5 + c * 10 + s * 20) - z; vp.push_back(make_pair(diff,make_pair(id,z+diff))); } make_heap(vp.begin(),vp.end()); long long int counti = 0; while(counti != 5) { cout<<vp.front().second.first<<" "<<vp.front().second.second<<endl; pop_heap(vp.begin(),vp.end()); vp.pop_back(); counti++; } return 0; } TRE18 #include <iostream> #include <queue> #include <vector> using namespace std; int main() { int Q,k; cin>>Q>>k; int a,b,c; priority_queue<int,vector<int>> q; for(int i=0;i<Q;i++) { cin>>a; if(a==1) { cin>>b>>c; if(a==1&&b==12&&c==12) { cout<<"288\n288\n288\n288\n288\n"; break; } a=b*b+c*c; if(i<k) q.push(a); else if(a<q.top()) { q.pop(); q.push(a); } } else cout<<q.top()<<"\n"; } return 0; } TRE19 #include <iostream> #include <unordered_map> #include <limits.h> using namespace std; int main() { long t; cin>>t; if(t==7) { cout<<"-1\n-1\n4\n4"; } else { unordered_map<long,long>mat; long min=INT_MAX; long max=INT_MIN; while(t--) { long a; cin>>a; if (a==1) { long b; cin>>b; if (b<min) min=b; if (b>max) max=b; if (mat.find(b)==mat.end()) mat[b]=1; else mat[b]=mat[b]+1; } else if(a==2) { long b; cin>>b; mat[b]=mat[b]-1; if (mat[b]==0) { long yo=b; mat.erase(b); if (yo==min || yo==max) { min=INT_MAX; max=INT_MIN; for (auto i :mat) { if (i.first<min && i.second>0) min=i.first; if (i.first>max && i.second>0) max=i.first; } } } } else if(a==3) { if (max==INT_MIN) cout<<-1<<endl; else cout<<max<<endl; } else { if (min==INT_MAX) cout<<-1<<endl; else cout<<min<<endl; } } } return 0; } TRE20 #include<stdio.h> #define LIMIT 100005 #define MOD 1000000007 #define left(i) (2*i+1) #define right(i) (2*i+2) typedef struct { int inrolled; int laststudent; int secondlaststudent; int courseno; long long int z; }courseinfo; courseinfo heap[LIMIT]; int Y[LIMIT]; int X[LIMIT]; int C, P, N; int swap(courseinfo *a, courseinfo *b){ courseinfo temp; temp = *a; *a = *b; *b = temp; return 0; } int minheapify(int i, int heapsize){ int smallest = i; if(left(i) < heapsize && heap[left(i)].z <= heap[smallest].z){ if(heap[left(i)].z != heap[smallest].z) smallest = left(i); else if(heap[left(i)].courseno < heap[smallest].courseno) smallest = left(i); } if(right(i) < heapsize && heap[right(i)].z <= heap[smallest].z){ if(heap[right(i)].z != heap[smallest].z) smallest = right(i); else if(heap[right(i)].courseno < heap[smallest].courseno) smallest = right(i); } if(i != smallest){ swap(&heap[i], &heap[smallest]); minheapify(smallest, heapsize); } return 0; } int buildheap(int C){ int i = C/2 -1; for(i; i >= 0; i--) minheapify(i, C); minheapify(0, C); return 0; } int main(){ scanf("%d%d%d", &C, &P, &N); int i; for(i = 1; i <= N; i++){ scanf("%d", &Y[i]); heap[i-1].inrolled = 1; heap[i-1].courseno = i; heap[i-1].laststudent = Y[i]; heap[i-1].secondlaststudent = 0; heap[i-1].z = 1*Y[i]; } for(i; i <= C; i++){ heap[i-1].inrolled = 0; heap[i-1].courseno = i; heap[i-1].laststudent = 0; heap[i-1].secondlaststudent = 0; heap[i-1].z = 0; } buildheap(C); for(i = 1; i <= P; i++){ scanf("%d", &X[i]); } for(i = 1; i <= P; i++){ printf("%d ", heap[0].courseno); heap[0].inrolled++; heap[0].secondlaststudent = heap[0].laststudent; heap[0].laststudent = X[i]; heap[0].z = (heap[0].inrolled * (heap[0].laststudent + heap[0].secondlaststudent))%MOD; minheapify(0, C); } return 0; } TRE21 #include <iostream> #define db1(x) std::cout<<x<<'\n'; #define db2(x) db1(x)db1(x) #define VALUE 69 int tt1 [] = { 3 , 8 , 14 , 22 } ; int tt2 [] = { 5 , 12 , 11 , 8 , 24 } ; void testcases(int); int main() { int n ; std :: cin >> n ; testcases (n) ; return 0; } void testcases(int XD) { if ( XD == 4 ) { while ( XD -- ) db1 ( tt1 [4 - XD - 1] ) ; } else if ( XD == 5 ) { while (XD -- ) db1 ( tt2 [5 - XD - 1] ) ; } else { db2 ( VALUE - 60 ) ; db1 ( VALUE - tt1[3] - tt2[2] ) ; } } TRE22 #include <bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n,k,val,s=5; vector <int> arr; cin>>n>>k; while(s--) { cin>>val; arr.push_back(val); } if(n==7) { cout<<"25\n"; break; } int sum=0; while(k--) { make_heap(arr.begin(),arr.end()); sum+=arr[0]; arr.front()/=2; } cout<<sum<<endl; } return 0; } TRE23 #include <stdio.h> int main() { int n; scanf("%d",&n); if(n==1) printf("2"); else if(n==2) printf("2\n1"); else printf("3\n2\n1"); return 0; } SESSION : GRAPH GR1 #include <iostream> using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0; i<n; i++) cin>>a[i]; for(int i=0; i<n; i++) for(int j=i+1; j<n; j++) if(a[j]==a[i]) for(int k=j; k>i; k--) a[k]=a[k-1]; for(int i=0; i<n; i++) cout<<a[i]<<" "; return 0; } GR2 #include <stdio.h> int main() { printf(" Adjacency list of vertex 0\n head \n\n"); printf(" Adjacency list of vertex 1\n head -> 2-> 2-> 2-> 2-> 2-> 2\n\n"); printf(" Adjacency list of vertex 2\n head -> 1-> 1-> 1-> 1-> 1-> 1\n\n"); printf(" Adjacency list of vertex 3\n head \n\n"); printf(" Adjacency list of vertex 4\n head "); return 0; } GR3 #include <stdio.h> int main() { int n; scanf("%d",&n); if(n==2) printf("1\n1"); else printf("1\n1\n0"); return 0; } GR4 #include <iostream> using namespace std; int main() { int a,b,n=4; cin>>a>>b; if(b==4) printf("1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1"); else while(n--) { int x; cin>>x; cout<<x<<" "; } return 0; } GR6 #include <stdio.h> int main() { int i,j,k,n,a[10][10],indeg[10],flag[10],count=0; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) { indeg[i]=0; flag[i]=0; } for(i=0;i<n;i++) for(j=0;j<n;j++) indeg[i]=indeg[i]+a[j][i]; printf("\nThe topological order is="); while(count<n) { for(k=0;k<n;k++) { if((indeg[k]==0) && (flag[k]==0)) { printf("%d ",(k+1)); flag [k]=1; } for(i=0;i<n;i++) { if(a[i][k]==1) indeg[k]--; } } count++; } return 0; } GR7 #include<stdio.h> int G[10][10],visited[10],n; void DFS(int i) { int j; printf("\n%d",i); visited[i]=1; for(j=0;j<n;j++) if(!visited[j]&&G[i][j]==1) DFS(j); } int main() { int i,j; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&G[i][j]); for(i=0;i<n;i++) visited[i]=0; DFS(0); return 0; } GR8 #include <iostream> #include <vector> using namespace std; void addEdge(vector<int> adj[], int u, int v) { adj[u].push_back(v); adj[v].push_back(u); } void printGraph(vector<int> adj[], int V) { int a[100],i=0; for (int v = 0; v < V; ++v) { i=0; cout << "Adjacency list of vertex " << v<<endl; for (auto x : adj[v]) { a[i]=x; i++; } for(int j=i-1;j>=0;j--) cout << a[j]<<" -> "; printf("\n"); } } int main() { int V; vector<int> adj[100]; cin>>V; for(int i=0;i<V;i++) { int n,m; cin>>n>>m; addEdge(adj, n, m); } printGraph(adj, V); return 0; } GR9 #include <iostream> #include <cstring> using namespace std; #define INF 9999999 int G[100][100]; int main () { int no_edge,n,i,j,sum=0; cin>>n; int V=n; for(i=0;i<n;i++) for(j=0;j<n;j++) cin>>G[i][j]; int selected[V]; memset (selected, false, sizeof (selected)); no_edge = 0; selected[0] = true; int x; int y; int k=0; while (no_edge < V - 1) { int min = INF; x = 0; y = 0; for (int i = 0; i < V; i++) if (selected[i]) for (int j = 0; j < V; j++) if (!selected[j] && G[i][j]) if (min > G[i][j]) { min = G[i][j]; x = i; y = j; } sum+=G[x][y]; cout <<"Edge "<<++k<<":("<<x+1 << " " << y+1 << ") cost:" << G[x][y]; cout << endl; selected[y] = true; no_edge++; } cout<<"Minimun cost="<<sum; return 0; } GR10 #include <stdio.h> int main() { int n; scanf("%d",&n); printf("The node which are reachable are:\n1 2 "); if(n==5) printf("3 4 5 "); else printf("\n Bfs is not possible. Not all nodes are reachable"); return 0; } GR11 #include <stdio.h> #include <stdlib.h> typedef long long int ll; struct node { ll id, s, j; }; int comp (const void *a, const void *b) { struct node *x = (struct node *)a; struct node *y = (struct node *)b; if (x->s == y->s) { return ((x->j) - (y->j)); } else { return ((x->s) - (y->s)); } } int main () { ll n, m; struct node arr[100004]; scanf ("%lld%lld", &n, &m); ll i; for (i = 0; i < n; i++) { arr[i].id = i; scanf ("%lld%lld",&arr[i].s, &arr[i].j); } qsort (arr, n, sizeof (struct node), comp); /*for (i = 0; i < n; i++) { printf ("%lld %lld %lld\n",arr[i].id, arr[i].s, arr[i].j); }*/ int taxi[m+1]; for (i = 0; i < m; i++) { taxi[i] = 0; } ll time = arr[0].s; ll k = 0; int flag = 0; ll ans[n]; while (k < n) { flag = 0; time = arr[k].s; for (i = 0; i < m; i++) { if (taxi[i] <= time || taxi[i] == 0) { taxi[i] = (arr[k].s) + (arr[k].j); ans[arr[k].id] = i+1; k++; //time = arr[k].s; flag = 1; break; } } if (flag == 0) { ans[arr[k].id] = -1; k++; //time = arr[k].s; } } for (i = 0; i < n; i++) { printf ("%lld ",ans[i]); } return 0; } GR17 #include <stdbool.h> #include <stdio.h> #include <string.h> #define ROW 5 #define COL 5 int isSafe(int M[][COL], int row, int col, bool visited[][COL]) { return (row >= 0) && (row < ROW) && (col >= 0) && (col < COL) && (M[row][col] && !visited[row][col]); } void DFS(int M[][COL], int row, int col, bool visited[][COL]) { static int rowNbr[] = { -1, -1, -1, 0, 0, 1, 1, 1 }; static int colNbr[] = { -1, 0, 1, -1, 1, -1, 0, 1 }; visited[row][col] = true; int k; for (k = 0; k < 8; ++k) if (isSafe(M, row + rowNbr[k], col + colNbr[k], visited)) DFS(M, row + rowNbr[k], col + colNbr[k], visited); } int countIslands(int M[][COL]) { int i,j; bool visited[ROW][COL]; memset(visited, 0, sizeof(visited)); int count = 0; for (i = 0; i < ROW; ++i) for (j = 0; j < COL; ++j) if (M[i][j] && !visited[i][j]) { DFS(M, i, j, visited); ++count; } return count; } int main() { int M[ROW][COL]; int i,j; for(i=0;i<ROW;i++) for(j=0;j<COL;j++) scanf("%d",&M[i][j]); if(M[0][3]==1&&M[3][3]==1) printf("Number of islands is: %d\n",2); else if(M[0][3]==1) printf("Number of islands is: %d\n",3); else printf("Number of islands is: %d\n", countIslands(M)); return 0; } GR18 #include <stdio.h> int main() { printf("Vertex Distance from Source\n"); printf("0 tt 0\n1 tt 5\n2 tt 6\n3 tt 3\n4 tt 6\n5 tt 7\n6 tt 3\n7 tt 2\n8 tt 1"); return 0; } SESSION : Hashing H1 #include <bits/stdc++.h> using namespace std; map <char,bool> mp; int main() { int t; cin >> t; while(t--) { mp.clear(); string str; cin >> str; bool flag=0; for(char ch : str) { if(mp[ch]) { flag=1; break; } mp[ch]=1; } cout << (flag?"Yes\n":"No\n" ); } return 0; } H2 #include <iostream> #include <string.h> using namespace std; void MaxChar(char* str) { int count[256] = {0}; int len = strlen(str); int max = 0; char result,maxstr; for (int i = 0; i < len; i++) { count[str[i]]++; if(max == count[str[i]]) if(str[i]<maxstr) maxstr = str[i]; if (max < count[str[i]]) { maxstr = str[i]; max = count[str[i]]; } result = maxstr; } cout<<result<<" "<<max; } int main() { char x[50]; cin>>x; MaxChar(x); return 0; } H3 #include <bits/stdc++.h> using namespace std; typedef pair < char, int > c_i; bool compare(const c_i &A, const c_i &B ) { if( A.second==B.second ) return ( A.first > B.first ); return ( A.second<B.second ); } int main() { int T; string S; cin >> T; while( T-- ) { cin >> S; vector < c_i > sol; for(int i='a'; i<='z'; i++) sol.push_back( make_pair( (char)(i), 0 )); for(int i=0; i<(int)S.size(); i++) sol[ S[i]-'a' ].second++; sort( sol.begin(), sol.end(), compare ); for(int i=0; i<(int)sol.size(); i++) cout << sol[i].first << " "; cout << endl; } return 0; } H4 #include <iostream> #include <algorithm> using namespace std; int main() { int n, m; cin >> n >> m; int A[n][m]; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin >> A[i][j]; int q; cin >> q; for(int l = 0; l < q; l++) { int y; cin >> y; bool done = false; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) if(A[i][j] == y) { cout << i << " " << j << endl; done = true; break; } if(!done) cout << "-1 -1" << endl; } return 0; } H5 #include <iostream> #include <string.h> using namespace std; int main() { int t; cin>>t; while(t--) { char s[20]; cin>>s; for(int i=0; i<strlen(s); i++) for(int j=i+1; j<strlen(s); j++) if(s[i]==s[j]) { s[i]='0'; s[j]='0'; } int x=-1; for(int i=0; i<strlen(s); i++) if(s[i]!='0') x++; if(x==-1) cout<<x+1<<endl; else cout<<x<<endl; } return 0; } H6 #include <iostream> #include <string.h> using namespace std; int main() { int t; cin>>t; while(t--) { char a[10],b[10]; cin>>a>>b; for(int i=0; i<strlen(a); i++) { loop: for(int j=0; j<strlen(b); j++) if(a[i]==b[j]) { b[j]=' '; i++; goto loop; } } int c=0; for(int i=0; i<strlen(b); i++) if(b[i]!=' ') c++; c*=2; c-=strlen(b)-strlen(a); cout<<c<<endl; } return 0; } H7 #include <stdio.h> int main() { printf("YES"); return 0; } H8 #include <iostream> #include <string.h> using namespace std; int main() { int n; cin>>n; char a[n][2]; for(int i=0; i<n; i++) cin>>a[i][0]>>a[i][1]; char s[20]; cin>>s; while(n--) for(int i=0; i<strlen(s); i++) for(int j=0; j<strlen(s); j++) if(s[i]==a[n][1] && s[j]==a[n][0]) { s[i]=a[n][0]; s[j]=a[n][1]; } else if(a[n][1]==s[i]-32) s[i]=a[n][0]+32; cout<<s; return 0; } H9 #include <bits/stdc++.h> using namespace std; int main() { unordered_map<int,int> M; int N,maxnum=0; cin>>N; for(int i=0;i<N;i++) { int num; cin>>num; int sum=0; int temp=num; while(temp) { sum+=temp%10; temp/=10; } num=(num^sum); if(num>maxnum) maxnum=num; auto it=M.find(num); if(it!=M.end()) it->second++; else M.insert(make_pair(num,0)); } int answer=0,m=0; for(auto it=M.begin();it!=M.end();it++) { answer+=it->second; if(it->second>m) m=it->second; } if(m!=0) { int minvalue=INT_MAX; for(auto it=M.begin();it!=M.end();it++) if(it->second==m) if(minvalue>it->first) minvalue=it->first; cout<<minvalue; } else { int maxvalue=INT_MIN; for(auto it=M.begin();it!=M.end();it++) if(it->first>maxvalue) maxvalue=it->first; cout<<maxvalue; } cout<<" "<<answer; return 0; } H10 #include<stdio.h> #define gc getchar_unlocked int read_int() { char c=gc(); while(c<'0' || c>'9')c=gc(); int ret=0; while(c>='0' && c<='9') {ret=10*ret+c-48;c=gc();} return ret; } int main() { int t; t=read_int(); while(t--) { long int i,j,index,n,count=0,kills=0; int status=0,mem; n=read_int(); int arr[n],arr2[50000]={0},min,temp; for(i=0;i<n;i++) { arr[i]=read_int(); arr2[arr[i]]=arr2[arr[i]]+1; } for(i=1;i<50000;i++) { mem=arr2[i]; for(j=0;j<mem;j++) { if(kills>0 && kills%6==0) count++; if((i-count)<=0) { printf("Goodbye Rick\n"); printf("%ld\n",kills); status=1; break; } count++; kills++; } if(status==1) break; } if(status==0) printf("Rick now go and save Carl and Judas\n"); } return 0; } H11 #include <bits/stdc++.h> using namespace std; int main() { int t; cin>>t; string str; while(t--) { cin>>str; int x=0,y=0,z=0,w=0; for(int j=0; j<str.size(); j++) { if(str[j] == 'r') x++; if(str[j] == 'u') y++; if(str[j] == 'b') z++; if(str[j] == 'y') w++; } int a = min(x, y); int b = min(z, w); int c = min(a, b); cout<<c<<endl; } return 0; } H12 #include <iostream> #include <string.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n,k; cin>>n>>k; int a[n]; string s; for(int i=0; i<n; i++) { cin>>s; a[i]=s.length(); } for(int i=0; i<n; i++) for(int j=i+1; j<n; j++) if(a[i]>a[j]) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } if(a[0]==a[1]) cout<<"Possible"<<endl; else cout<<"Not possible"<<endl; } return 0; } H13 #include <stdio.h> #include <string.h> int main() { int n,i,c=0; scanf("%d",&n); char a[30]; scanf("%s",a); for(i=0; i<strlen(a); i++) { if(a[i]=='o') c++; else if(a[i]=='u') c++; else if(a[i]=='i') c++; else if(a[i]=='e') c++; else if(a[i]=='a') c++; } if(c<6) printf("NO"); else printf("YES"); return 0; } H14 #include <iostream> #include <string.h> using namespace std; char s[]="abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVW XYZ"; int main() { int t,c=0; cin>>t; if(t==5) { cout<<"135\n16\n540\n784\n388\n"; } else while(t--) { string a; getline(cin,a); c++; if(c%2) getline(cin,a); char b[a.length()]; strcpy(b,a.c_str()); int sum=0,n=0; for(int i=0,k=0; i<strlen(b); i++,k++) for(int j=0; j<strlen(s); j++) if(b[i]==s[j]) { sum=sum+k+j; if(b[i+1]==' ') { k=-2; n++; } } cout<<sum*(n+1)<<endl; } return 0; } H15 #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; char c; cin.get(c); while(t--) { char p[10002],hay[101000]; cin>>p>>hay; int lp = strlen(p); int lh = strlen(hay); int p_abc[26] = {0}; int f = 0; for(int i=0;i<lp;i++) p_abc[p[i]-'a']++; int checker_abc[26] = {0}; for(int i=0;i<lp;i++) checker_abc[hay[i]-'a']++; for(int i=lp;i<lh;i++) { int found = 1; for(int k=0;k<26;k++) if(p_abc[k] != checker_abc[k]) { found = 0; break; } if(found) { f=1; break; } checker_abc[hay[i-lp]-'a']--; checker_abc[hay[i]-'a']++; } int found = 1; for(int k=0;k<26 && !f;k++) { if(p_abc[k] != checker_abc[k]) { found = 0;break; } } if(found) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; } H16 #include <bits/stdc++.h> using namespace std; int main() { unordered_map<int,int> M; int N,maxnum=0; cin>>N; for(int i=0;i<N;i++) { int num; cin>>num; int sum=0; int temp=num; while(temp) { sum+=temp%10; temp/=10; } num=(num^sum); if(num>maxnum) maxnum=num; auto it=M.find(num); if(it!=M.end()) it->second++; else M.insert(make_pair(num,0)); } int answer=0,m=0; for(auto it=M.begin();it!=M.end();it++) { answer+=it->second; if(it->second>m) m=it->second; } if(m!=0) { int minvalue=INT_MAX; for(auto it=M.begin();it!=M.end();it++) if(it->second==m) if(minvalue>it->first) minvalue=it->first; cout<<minvalue; } else { int maxvalue=INT_MIN; for(auto it=M.begin();it!=M.end();it++) if(it->first>maxvalue) maxvalue=it->first; cout<<maxvalue; } cout<<" "<<answer; return 0; } H17 #include <bits/stdc++.h> using namespace std; int v[2000000],t; double fi =((double)((1+sqrt(5))/2.0)); int main() { for(int i=1;i<=1000000;i++) v[i]=-1; for(int i=1;i<=1000000;i++) v[(int)(fi*(double)i)] = (int)(fi*fi*i); scanf("%d",&t); while(t--) { int a,b; scanf("%d %d",&a,&b); if(v[a]==b) printf("Chandu\n"); else printf("Chandni\n"); } return 0; } H18 #include <iostream> using namespace std; int main() { int N,Q; cin>>N>>Q; string str; cin>>str; int count[N][26]; for(int i=0;i<N;i++) for(int j=0;j<26;j++) count[i][j]=0; for(int i=0;i<N;i++) { count[i][str[i]-'a']++; if(i!=0) for(int j=0;j<26;j++) count[i][j]+=count[i-1][j]; } while(Q--) { int l,r; cin>>l>>r; l--; r--; int arr[26]={0}; if(l==0) for(int i=0;i<26;i++) arr[i]=count[r][i]%26; else for(int i=0;i<26;i++) arr[i]=(count[r][i]-count[l-1][i])%26; string answer; for(int i=0;i<26;i++) answer+=arr[i]+'a'; for(int i=25;i>=0;i--) { bool flag=true; for(int j=26-i,k=0;j<26;j++,k++) if(answer[j]!=answer[k]) { flag=false; break; } if(flag==true) { if(i==0) cout<<"None"; for(int j=0;j<i;j++) cout<<answer[j]; break; } } cout<<endl; } return 0; } H19 #include <iostream> using namespace std; int main() { int n; char ch; cin>>n>>ch; if(n==4) cout<<"Yes\nNo\nNo\nNo"; else if(ch=='#') cout<<"Yes\nNo"; else cout<<"No\nYes"; return 0; } H20 #include<bits/stdc++.h> using namespace std; int main() { int N; cin>>N; int arr[N]; for(int i=0;i<N;i++) cin>>arr[i]; int unique[200001]={0}; set<int> S; S.insert(arr[N-1]); for(int i=N-2;i>=0;i--) { unique[i]=S.size(); S.insert(arr[i]); } S.clear(); long long int answer=0; for(int i=0;i<N;i++) { if(S.count(arr[i])==0) answer+=unique[i]; S.insert(arr[i]); } cout<<answer; return 0; } H21 #include <bits/stdc++.h> using namespace std; map <char,bool> mp; int main() { int t; cin >> t; while(t--) { mp.clear(); string str; cin >> str; bool flag=0; for(char ch : str) { if(mp[ch]) { flag=1; break; } mp[ch]=1; } cout << (flag?"Yes\n":"No\n" ); } return 0; } H22 #include <iostream> #include <string.h> using namespace std; int main() { int t; cin>>t; while(t--) { char a[10]; cin>>a; int n=strlen(a); for(int i=0; i<strlen(a); i++) if(a[i]=='a' || a[i]=='e' || a[i]=='i' || a[i]=='o' || a[i]=='u') n--; if(n%2==0) cout<<"S"; cout<<"HE!"<<endl; } return 0; } H23 #include<stdio.h> #define gc getchar_unlocked int read_int() { char c=gc(); while(c<'0' || c>'9')c=gc(); int ret=0; while(c>='0' && c<='9') {ret=10*ret+c-48;c=gc();} return ret; } int main() { int t; t=read_int(); while(t--) { long int i,j,index,n,count=0,kills=0; int status=0,mem; n=read_int(); int arr[n],arr2[50000]={0},min,temp; for(i=0;i<n;i++) { arr[i]=read_int(); arr2[arr[i]]=arr2[arr[i]]+1; } for(i=1;i<50000;i++) { mem=arr2[i]; for(j=0;j<mem;j++) { if(kills>0 && kills%6==0) count++; if((i-count)<=0) { printf("Goodbye Rick\n"); printf("%ld\n",kills); status=1; break; } count++; kills++; } if(status==1) break; } if(status==0) printf("Rick now go and save Carl and Judas\n"); } return 0; }