Professional Documents
Culture Documents
Дадени се две двострано поврзани листи чии што јазли содржат по еден природен
број. Од овие две листи треба да се креира нова двострано поврзана листа, на тој
начин што јазлите ќе се додаваат наизменично и тоа само оние со парни броеви (прв
елемент од првата листа (ако е парен), последен од втората (ако е парен), втор
елемент од првата листа (ако е парен), претпоследен од втората (ако е парен) итн.).
Јазлите со парни броеви кои ќе останат треба да се додадат на крај во резултантната
листа. Потоа на резултантната листа се додаваат само преостанатите јазли со
непарни елементи од првата листа и преостанатите јазли со непарни елементи но во
обратен редослед од втората листа.
Во првиот ред од влезот е даден бројот на јазли во првата листа, потоа во вториот ред
се дадени броевите од кои се составени јазлите по редослед во првата листа, па во
третиот ред е даден бројот на јазли во втората листа, и на крај во четвртиот ред
броевите од кои се составени јазлите по редослед во втората листа. На излез треба
да се испечатат јазлите по редослед во резултантната споена листа.
Sample input
20
18 5 77 5 57 15 27 43 26 0 31 61 50 63 34 25 52 4 72 24
50
90 31 93 52 40 13 8 77 43 82 71 99 95 56 13 30 4 14 10 27 33 12 18 52 5 59 48 25 80 84 57 2 64 94 4 62 7 68
77 64 27 7 39 91 59 24 87 95 22 28
Sample output
18 28 22 24 26 0 64 50 68 34 62 4 52 94 4 64 72 2 24 84 80 48 52 18 12 10 14 4 30 56 82 8 40 52 90 5 77 5 57
15 27 43 31 61 63 25 95 87 59 91 39 7 27 77 7 57 25 59 5 33 27 13 95 99 71 43 77 13 93 31
18 28 22 24 26 0 64 50 68 34 62 4 52 94 4 64 72 2 24 84 80 48 52 18 12 10 14 4 30
56 82 8 40 52 90 5 77 5 57 15 27 43 31 61 63 25 95 87 59 91 39 7 27 77 7 57 25 59
5 33 27 13 95 99 71 43 77 13 93 31
Делумно решение: Задачата се смета за делумно решена доколку се поминати 7 тест
примери.
Your solution:
Programming language: C Java
#include<stdio.h>
#include<malloc.h>
int info;
}node;
node * novaDvojna()
v -> llink = v;
v -> rlink = v;
return v;
//nodep t=NEW(node);
//t->info=x;
l->llink->rlink=newn;
newn->llink=l->llink;
newn->rlink=l;
l->llink=newn;
node *temp;
temp=(node *)malloc(sizeof(node));
temp->info=broj;
node *p=v1->rlink;
node *q=v2->llink;
node *temp1=p,*temp2=q;
int flag=0;
while((p!=v1)||(q!=v2))
if(flag==0)
flag=1;
// temp1=p;
if(p->info%2==0)
temp1=p;
p=p->rlink;
temp1->llink->rlink=temp1->rlink;
temp1->rlink->llink=temp1->llink;
temp1->llink=v3->llink;
temp1->rlink=v3;
v3->llink->rlink=temp1;
v3->llink=temp1;
// ins_before(&v3,&temp1);
else
//flag=1;
p=p->rlink;
}
}
else if(flag==1)
flag=0;
if(q->info%2==0)
temp2=q;
q=q->llink;
temp2->rlink->llink=temp2->llink;
temp2->llink->rlink=temp2->rlink;
temp2->llink=v3->llink;
temp2->rlink=v3;
v3->llink->rlink=temp2;
v3->llink=temp2;
//ins_before(&v3,&temp2);
else
// flag=0;
q=q->llink;
p=v1->rlink;
q=v2->llink;
}
if(p->rlink==v1)
while(q!=v2)
if(q->info%2==0)
temp2=q;
q=q->llink;
temp2->rlink->llink=temp2->llink;
temp2->llink->rlink=temp2->rlink;
temp2->llink=v3->llink;
temp2->rlink=v3;
v3->llink->rlink=temp2;
v3->llink=temp2;
// ins_before(&v3,&temp2);
else
q=q->llink;
else if(q->llink==v2)
{
while(p!=v1)
if(p->info%2==0)
temp1=p;
p=p->rlink;
temp1->rlink->llink=temp1->llink;
temp1->llink->rlink=temp1->rlink;
temp1->llink=v3->llink;
temp1->rlink=v3;
v3->llink->rlink=temp1;
v3->llink=temp1;
//ins_before(&v3,&temp1);
else
p=p->rlink;
p=v1->rlink;
q=v2->llink;
while(p!=v1)
{
p->rlink->llink=p->llink;
p->llink->rlink=p->rlink;
p->llink=v3->llink;
p->rlink=v3;
v3->llink->rlink=p;
v3->llink=p;
// ins_before(&v3,&p);
p=p->rlink;
while(q!=v2)
q->rlink->llink=q->llink;
q->llink->rlink=q->rlink;
q->llink=v3->llink;
q->rlink=v3;
v3->llink->rlink=q;
v3->llink=q;
//ins_before(&v3,&q);
q=q->rlink;
}
node *temp;
temp=v3->rlink;
while(temp!=v3)
printf("%d ",temp->info);
temp=temp->rlink;
int main(){
int i,n,info;
lista1=novaDvojna();
lista2=novaDvojna();
rezLista=novaDvojna();
scanf("%d",&n);
for(i=0;i<n;i++)
dodadi(&lista1,info);
scanf("%d",&n);
for(i=0;i<n;i++)
{
dodadi(&lista2,info);
NovaLista(lista1,lista2,rezLista);
return 0;
JAVA
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class DLLNode<E> {
protected E element;
this.element = elem;
this.pred = pred;
this.succ = succ;
}
@Override
return element.toString();
class DLL<E> {
public DLL() {
this.first = null;
this.last = null;
first = null;
last = null;
int ret;
if (first != null) {
ret = 1;
tmp = tmp.succ;
ret++;
return ret;
} else
return 0;
if (first == null)
last = ins;
else
first.pred = ins;
first = ins;
if (first == null)
insertFirst(o);
else {
last.succ = ins;
last = ins;
}
public void insertAfter(E o, DLLNode<E> after) {
if (after == last) {
insertLast(o);
return;
after.succ.pred = ins;
after.succ = ins;
if (before == first) {
insertFirst(o);
return;
before.pred.succ = ins;
before.pred = ins;
public E deleteFirst() {
if (first != null) {
if (first.succ == null){
last = null;
first = null;
else{
DLLNode<E> tmp = first;
first = first.succ;
first.pred = null;
return tmp.element;
return null;
public E deleteLast() {
if (first != null) {
if (first.succ == null)
return deleteFirst();
else {
last = last.pred;
last.succ = null;
return tmp.element;
return null;
@Override
tmp = tmp.succ;
} else
return ret;
return first;
return last;
System.in));
String s = stdin.readLine();
int N = Integer.parseInt(s);
s = stdin.readLine();
lista1.insertLast(Integer.parseInt(pomniza[i]));
s = stdin.readLine();
N = Integer.parseInt(s);
s = stdin.readLine();
lista2.insertLast(Integer.parseInt(pomniza[i]));
Билет Problem 2 (0 / 0)
Магдалена во Париз се вози на метро. Билетот, кој се купува преку автомат, чини n
евра, а тој го купува со парички од една или две евра така што паричките ги пушта
една по една во автоматот. Ако Магдалена на почеток има барем по n парички од една
и од две евра, и го земаме предвид редоследот на пуштање на паричките, тогаш на
колку начини може Магдалена да купи билет?
На влез се дава колку евра е билетот, а на излез треба да се испечати број на начини
за купување на билетот.
Пример: (1, 2, 1), (1, 1, 2), (2, 1, 1), (1, 1, 1, 1) и (2, 2) се 5 можни различни начини за
купување на билет од 4 евра.
Your solution:
Programming language: C Java
#include<stdio.h>
int i,j,tmp;
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
tmp = coins[i];
coins[i] = coins[j];
coins[j] = tmp;
}
// coins e niza so vrednostite na parickite koi se dadeni
// n e brojot na paricki
sortiraj_paricki(coins, n);
int i = 0;
br += coinsNum[i];
i++;
while(i < n) {
coinsNum[i] = 0;
i++;
return br;
int bilet(int n)
{
int coins[9];
coins[0] = 1;
coins[1] = 2;
coins[2] = 5;
coins[3] = 10;
coins[4] = 50;
coins[5] = 100;
coins[6] = 500;
coins[7] = 1000;
coins[8] = 5000;
int m=9;
int coinsNum[1000];
int broj=greedyCoins(coins,m,n,coinsNum);
int main()
int n;
scanf("%d",&n);
printf("%d\n",bilet(n));
return 0;
JAVA
import java.io.BufferedReader;
import java.io.InputStreamReader;
int n = Integer.parseInt(br.readLine());
System.out.println(bilet(n));
Your solution:
Programming language: C Java
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int zatrupan;
} city;
city gradovi[MAXVERTS];
int index;
info_t info;
} node;
int num_nodes;
node *adjList[MAXVERTS];
} graph;
node *tmp;
if (tmp->index==y)
return 1;
return 0;
node *tmp;
if (tmp->index==y)
return;
p->info=yInfo;
p->index=y;
p->link=g->adjList[x];
g->adjList[x]=p;
node *p,*last;
if (p->index==y)
break;
g->adjList[x]=p->link;
else
{
// naoganje na prethodnikot na jazelot sto treba da se izbrise
for (last=g->adjList[x];(last!=NULL)&&(last->link!=NULL);last=last->link) {
if (last->link==p)
break;
last->link=p->link;
free(p); // brisenje
int main(){
int i,j,k;
int N, tmp;
char str_zatrupan_so_sneg[15];
int a, b;
for (i=0;i<N;i++) {
if (str_zatrupan_so_sneg[0] == 'd') {
gradovi[i].zatrupan = 1;
} else {
gradovi[i].zatrupan = 0;
}
int i_num_nodes;
g->num_nodes=N;
for(i=0;i<g->num_nodes;i++)
g->adjList[i]=NULL;
scanf("%d", &M);
for(i=0;i<M;i++) {
addEdge(g,a,b,&gradovi[b]);
addEdge(g,b,a,&gradovi[a]);
scanf("%d", &pocetok);
// moze da pisuvate funkcii koi sto vi se potrebni ili da gi menuvate postoeckite klasi/funkcii
return 0;
}
JAVA
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
int i, j, k;
st.nextToken();
if (str_zatrupan.equals("da")) {
} else {
}
int M = Integer.parseInt(br.readLine()); // broj na rabovi
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
g.addEdge(a, b);
g.addEdge(b, a);
// moze da pisuvate funkcii koi sto vi se potrebni ili da gi menuvate postoeckite klasi/funkcii
class City {
boolean zatrupan;
City(boolean zatrupan) {
this.zatrupan = zatrupan;
@Override
return "zatrupan";
} else {
return "nezatrupan";
class Graph {
int num_nodes;
GraphNode<City> adjList[];
@SuppressWarnings("unchecked")
this.num_nodes = num_nodes;
return (adjList[x].containsNeighbor(adjList[y])) ? 1 : 0;
if (!adjList[x].containsNeighbor(adjList[y])) {
adjList[x].addNeighbor(adjList[y]);
adjList[x].removeNeighbor(adjList[y]);
@Override
return ret;
class GraphNode<E> {
private E info;
this.index = index;
this.info = info;
neighbors = new LinkedList<GraphNode<E>>();
boolean containsNeighbor(GraphNode<E> o) {
return neighbors.contains(o);
void addNeighbor(GraphNode<E> o) {
neighbors.add(o);
void removeNeighbor(GraphNode<E> o) {
if (neighbors.contains(o)) {
neighbors.remove(o);
@Override
return ret;
}
@Override
@SuppressWarnings("unchecked")
return (pom.info.equals(this.info));
return index;
this.index = index;
public E getInfo() {
return info;
this.info = info;
return neighbors;
}
public void setNeighbors(LinkedList<GraphNode<E>> neighbors) {
this.neighbors = neighbors;
Sample input
9
0 ne
1 ne
2 ne
3 da
4 da
5 da
6 ne
7 da
8 ne
11
0 1
0 2
1 3
2 4
3 4
3 5
4 6
5 6
5 7
6 8
7 8
0
Sample output
3