Skip to content

Commit e990e74

Browse files
authored
Add files via upload
1 parent e2fdf77 commit e990e74

File tree

3 files changed

+146
-0
lines changed

3 files changed

+146
-0
lines changed

Sphere Online Judge/bsearch1.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include <iostream>
2+
#include <stdio.h>
3+
#define ARRAY_SIZE(array) (sizeof((array))/sizeof((array[0])))
4+
using namespace std;
5+
6+
int binarySearch (int * array, int left, int right, int key) {
7+
if (left > right)
8+
return -1;
9+
int mid = (left + right) / 2;
10+
if (array[mid] == key) {
11+
if (mid == 0 || array[mid - 1] != key)
12+
return mid;
13+
return binarySearch (array, left, mid - 1, key);
14+
}
15+
if (array[mid] > key)
16+
return binarySearch(array, left, mid - 1, key);
17+
return binarySearch(array, mid + 1, right, key);
18+
}
19+
20+
int main () {
21+
int n, q, k;
22+
int array[100000];
23+
scanf ("%d %d", &n, &q);
24+
for (int i = 0; i < n; i++)
25+
scanf ("%d", &array[i]);
26+
for (int z = 0; z < q; z++) {
27+
scanf ("%d", &k);
28+
printf ("%d\n", binarySearch(array, 0, n-1, k));
29+
}
30+
}

Sphere Online Judge/codesptb.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include<stdio.h>
2+
#include<string.h>
3+
#include<iostream>
4+
#include<algorithm>
5+
using namespace std;
6+
int a[200001];
7+
int te[200001];
8+
unsigned long long merge(int arr[],int temp[],int left,int mid,int right)
9+
{
10+
int i=left;
11+
int j=mid;
12+
int k=left;
13+
unsigned long long int icount=0;
14+
while((i<=mid-1) && (j<=right))
15+
{
16+
if(arr[i]<=arr[j])
17+
temp[k++]=arr[i++];
18+
else
19+
{
20+
temp[k++]=arr[j++];
21+
icount+=(mid-i);
22+
}
23+
}
24+
while(i<=mid-1)
25+
temp[k++]=arr[i++];
26+
while(j<=right)
27+
temp[k++]=arr[j++];
28+
for(int i=left;i<=right;i++)
29+
arr[i]=temp[i];
30+
return icount;
31+
}
32+
unsigned long long int mergesort(int arr[],int temp[],int left,int right)
33+
{
34+
unsigned long long int i=0;
35+
if(right>left){
36+
int mid=(left+right)/2;
37+
i=mergesort(arr,temp,left,mid);
38+
i+=mergesort(arr,temp,mid+1,right);
39+
i+=merge(arr,temp,left,mid+1,right);
40+
}
41+
return i;
42+
}
43+
int main()
44+
{
45+
int t,n;
46+
scanf("%d",&t);
47+
while(t--){
48+
scanf("%d",&n);
49+
for(int i=0;i<n;i++){
50+
scanf("%d",&a[i]);
51+
}
52+
printf("%llu\n",mergesort(a,te,0,n-1));
53+
}
54+
return 0;
55+
}

Sphere Online Judge/mergsort.c

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include <stdio.h>
2+
3+
void merge(int left[],int l,int right[],int r,int A[])
4+
{
5+
int i, j, k;
6+
i = j = k = 0;
7+
while (i < l && j < r) {
8+
if (left[i] <= right[j]) {
9+
A[k] = left[i];
10+
i++;
11+
} else {
12+
A[k] = right[j];
13+
j++;
14+
}
15+
k++;
16+
}
17+
while (i < l) {
18+
A[k] = left[i];
19+
i++;
20+
k++;
21+
}
22+
while (j < r) {
23+
A[k] = right[j];
24+
j++;
25+
k++;
26+
}
27+
}
28+
29+
void merge_sort(int A[], int n)
30+
{
31+
int i, j, mid;
32+
if (n < 2) {
33+
return;
34+
}
35+
mid = n / 2;
36+
int left[mid];
37+
int right[n - mid];
38+
for(i = 0; i < mid; i++) {
39+
left[i] = A[i];
40+
}
41+
for(i = mid; i < n; i++) {
42+
right[i - mid] = A[i];
43+
}
44+
merge_sort(left,mid);
45+
merge_sort(right,n - mid);
46+
merge(left,mid,right,n-mid,A);
47+
}
48+
49+
int main()
50+
{
51+
int A[100000], c = 0, i;
52+
while(scanf("%d", &A[c]) != EOF) {
53+
c++;
54+
}
55+
merge_sort(A,c);
56+
for(i = 0; i < c; i++) {
57+
printf("%d ", A[i]);
58+
}
59+
printf("\n");
60+
return 0;
61+
}

0 commit comments

Comments
 (0)