Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Од стнадарден влез се чита цел број N не поголем од 100 кој претставува број на елементи на низата a. Потоа се читаат содветно елементите на низата a. Потоа се чита цел број M не поголем од 100 кој претставува број на елементи на низата b и содветно се читаат елементите на низата b.
- Треба да се креира нова низа c на следниот начин: првиот елемент е поголемиот од максимумите во двете низи; вториот елемент е поголемиот од максимумите на последните n/2 елементи од низата a и последните m/2 елементи од низата b; третиот елемент е поголемиот од максимумите на последните n/4 елементи од низата a и последните m/4 елементи од низата b итн се додека низите имаат елементи. Итерацијата завршува кога барем кај една од низите n/k или m/k стане 0 (k={2,4,8,16,...})
- На стандарден излез да се испечати новодобиената низа c.
- Наоѓањето максимум во низа да се реализира со посебна рекурзивна функција.*/
- #include <stdio.h>
- #include <math.h>
- #define MAX 100
- #define MIN 1
- int recursion(int *a, int i, int n, int max){
- if(i>n){
- return max;
- }
- if(a[i]>max){
- return recursion(a,i+1,n,a[i]);
- }
- return recursion(a,i+1,n,max);
- }
- int pomal(int a, int b){
- if(a>b){
- return b;
- }
- return a;
- }
- int pogolem(int a, int b){
- if(a>b){
- return a;
- }
- return b;
- }
- int main(){
- int n, m, s, k, i, j, a[MAX], b[MAX], c[MAX];
- scanf("%d", &n);
- for(i=0;i<n;i++){
- scanf("%d", &a[i]);
- }
- scanf("%d", &m);
- for(j=0;j<m;j++){
- scanf("%d", &b[j]);
- }
- s=pomal(m,n);
- for(i=0;pow(2,i)<=s;i++){
- k=pow(2,i);
- c[i]=pogolem(recursion(a,n-(n/k),n-1,MIN),recursion(b,m-(m/k),m-1,MIN));
- }
- for(i=0;pow(2,i)<=s;i++){
- printf("%d ", c[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement