 |
Advertisement Problem
Broadcasting stations need to schedule the ads, so no collision occurs. How does
an ads schedule software work? Below you can find the basic algorithm.
The Algorithm

Pascal Source Code
program ad;
uses crt;
var
a:array[1..100,1..100]of integer;
c,d:array[1..100]of integer;
i,n,j,t,k,l,yedek,byk,v,old:integer;
begin
clrscr;
writeln('number of advertisements');
readln(n);
for i:=1 to n do
begin
writeln(i,' advertisement...:');
write('cost...:');readln(a[1,i]);
write('validity time...:');readln(a[2,i]);
end;
for i:=1 to n-1 do
begin
for j:=1 to n-i do
if(a[2,j]>=a[2,j+1]) then
for k:=1 to 2 do
begin
yedek:=a[k,j];
a[k,j]:=a[k,j+1];
a[k,j+1]:=yedek;
end;
end;
writeln('sorted array...:');
write('cost...: ');
for i:=1 to n do write(a[1,i]:4);
writeln;
write('validity..:');
for i:=1to n do write(a[2,i]:4);readkey; writeln;
c[1]:=a[2,1];
t:=1;
for i:=2 to n do
begin
if (a[2,i]<>a[2,i-1]) then
begin
t:=t+1;c[t]:=a[2,i];
end;
end;
for j:=t downto 1 do
begin
i:=n;
while (a[2,i]>=c[j]) and (i>1) do
begin
i:=i-1; l:=i;
end;
byk:=a[1,l];
old:=l;
for v:=l to n do
begin
if a[1,v]>byk then
begin
byk:=a[1,v];
old:=v;
end;
end;
d[j]:=byk;
a[1,old]:=0;
end;
for i:=0 to t+1 do begin
write(d[i],' ');writeln;end; readkey;
end.
Sample Execution
number
of advertisements
5
1.
advertisement...: cost...:30
validity...:4
2.
advertisement...: cost...:44
validity...:3
3.
advertisement...: cost...:45
validity...:2
4.
advertisement...: cost...:50
validity...:5
5.
advertisement...: cost...:60
validity...:8
sorted
array...:
cost...:
45 44 30 50 60
validity..:
2 3 4 5 8
1.
advertisement...:30
2.
advertisement...:45
3.
advertisement...:44
4.
advertisement...:50
5.
advertisement...:60
|
 |