Function Description
Complete the sockMerchant function in the editor below. It must return an integer representing the number of matching pairs of socks that are available.
sockMerchant has the following parameter(s):
- n: the number of socks in the pile
- ar: the colors of each sock
Input Format
The first line contains an integer , the number of socks represented in .
The second line contains space-separated integers describing the colors of the socks in the pile.
Constraints
- where
Output Format
Return the total number of matching pairs of socks that John can sell.
Sample Input
9
10 20 20 10 10 30 50 10 20
Sample Output
3
Solution:
//code by anewbieprogrammer
#include<iostream>
using namespace std;
void merge(int arr[], int s, int e, int mid){
int temp[100];
int i = s;
int k = s;
int j = mid + 1;
while(i <= mid && j <= e){
if(arr[i] <= arr[j])
temp[k++] = arr[i++];
else
temp[k++] = arr[j++];
}
while(i <= mid){
temp[k++] = arr[i++];
}
while(j <= e){
temp[k++] = arr[j++];
}
for(int i = s; i <= e; i++){
arr[i] = temp[i];
}
}
void sort(int arr[], int s, int e){
if(s >= e){
return;
}
int mid = (s + e) / 2;
sort(arr, s, mid);
sort(arr, mid+1, e);
merge(arr, s, e, mid);
}
int sockMerchant(int arr[], int total){
int count=1, sum = 0;
int pair[100];
int c = 0;
sort(arr, 0, total-1);
int temp = arr[0];
for(int it = 1; it < total; it++){
if(temp == arr[it])++count;
else{
pair[c++] = count;
temp = arr[it];
count = 1;
}
}
pair[c++] = count;
for(int it = 0; it < c; it++){
int r = pair[it] / 2;
sum += r;
}
return sum;
}
int main(){
int total;
cin>>total;
int arr[total];
for(int it = 0; it < total; it++){
cin>>arr[it];
}
cout<<sockMerchant(arr, total);
}
No comments:
Post a Comment