Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

RGB8041 - Үйлдлийн тоо

р141.pas эрэмбэлэлтийн програм өгөгдөв. Энэхүү програмыг ашиглан тодорхой нэгэн массивыг эрэмбэлэхэд массивын хоёр элементийг жиших үйлдэл ( програмын 25-р мөр ) хэдэн удаа хийгдэхийг ол.

Input

Эхний мөрөнд N тоо. ( 1<=N<=100)

Дараагийн мөрөнд модулиараа 1000-аас хэтрэхгүй N бүхэл тоо өгөгдөнө.

Output

Эрэмбэлэлтийн програм ашиглан массивыг эрэмбэлэхэд хоёр элементийг жиших үйлдэл хэдэн удаа ашиглагдсан тоо.

Example

Input:
5
3 1 2 4 2
Output:
10

const nmax=100;

var a:array[1..nmax] of integer;
    n:integer;
    i,j,g:integer;

    f1,f2:text;

begin
assign(f1,'input.txt');
reset(f1);
assign(f2,'output.txt');
rewrite(f2);
                                  {—⥭¨¥ ¢å®¤­ëå ¤ ­­ëå}
read(f1,n);
for i:=1 to n do read(f1,a[i]);
                                  {‘®àâ¨à®¢ª  ¬ áᨢ }

for i:=1 to n do begin            {®¤¡¨à ¥¬ ç¨á«® ­  i-®¥ ¬¥áâ®}

  g:=i;                           {‘ç¨â ¥¬, çâ® á ¬®¥ ¬ «¥­ìª®¥ ç¨á«®,
                                   ª®â®à®¥ ­ ¬ ¢áâà¥â¨«®áì, á⮨⠭  ¬¥á⥠i}

  for j:=i+1 to n do              {¥à¥¡¨à ¥¬ ¢á¥ ç¨á«  á i+1 ¤® ª®­æ  ¬ áᨢ }
    if a[j]<a[g] then g:=j;       {…᫨ ­ è«¨ ç¨á«®, ª®â®à®¥ ¬¥­ìè¥,
                                   祬 â®, ç⮠㦥 ­ ©¤¥­®, § ¯®¬¨­ ¥¬ ¥£®}

                                  {Œ¥­ï¥¬ ¬¥áâ ¬¨ ç¨á« , áâ®ï騥 ­  i-®¬ ¨
                                   ­  g-®¬ ¬¥áâ å }
                                  {…᫨ a[i]=x, a[g]=y, â® ¯®á«¥ ¢ë¯®«­¥­¨ï
                                   ª®¬ ­¤ë: }
  if i<>g then begin
    a[i]:=a[i]+a[g];                {a[i]=x+y, a[g]=y}
    a[g]:=a[i]-a[g];                {a[i]=x+y, a[g]=(x+y)-y=x}
    a[i]:=a[i]-a[g];                {a[i]=(x+y)-x=y}
                                  {’® ¥áâì ¯®á«¥ í⮣® a[i]=y, a[g]=x
                                   ®¡¬¥­ §­ ç¥­¨© ¯à®¨§®è¥«}
    end;

  end;

                                  {‚뢮¤¨¬ १ã«ìâ â}
for i:=1 to n do
  write(f2,a[i],' ');
close(f1);
close(f2);
end.

 


Нэмсэн:Bataa
Огноо:2010-01-26
Хугацааны хязгаарлалт:1s
Эх кодын хэмжээний хязгаарлалт:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Програмчлалын хэлүүд:ADA95 ASM32 ASM64 BASH BF C CSHARP C++ 4.3.2 CPP CPP14 C99 CLPS LISP sbcl LISP clisp D ERL FORTRAN HASK ICON ICK JAVA JS-RHINO LUA NEM NICE OCAML PAS-GPC PAS-FPC PERL PHP PIKE PRLG-swi PYTHON RUBY SCALA SCM guile SCM qobi ST TCL TEXT WHITESPACE

hide comments
2014-01-05 09:48:03 mubis
//Орос тайлбарыг засав
const nmax=100;

var a:array[1..nmax] of integer;
n:integer;
i,j,g:integer;

f1,f2:text;

begin
assign(f1,'input.txt');
reset(f1);
assign(f2,'output.txt');
rewrite(f2); {Чтение входных данных}
read(f1,n);
for i:=1 to n do read(f1,a[i]); {Сортировка массива}

for i:=1 to n do begin {Подбираем число на i-ое место}

g:=i; {Считаем, что самое маленькое число,
которое нам встретилось, стоит на месте i}

for j:=i+1 to n do {Перебираем все числа с i+1 до конца массива}
if a[j]<a[g] then g:=j; {Если нашли число, которое меньше,
чем то, что уже найдено, запоминаем его}
{Меняем местами числа, стоящие на i-ом и
на g-ом местах }
{Если a[i]=x, a[g]=y, то после выполнения
команды: }
if i<>g then begin
a[i]:=a[i]+a[g]; {a[i]=x+y, a[g]=y}
a[g]:=a[i]-a[g]; {a[i]=x+y, a[g]=(x+y)-y=x}
a[i]:=a[i]-a[g]; {a[i]=(x+y)-x=y}
{То есть после этого a[i]=y, a[g]=x обмен значений произошел}
end;
end
{Выводим результат}
for i:=1 to n do
write(f2,a[i],' ');
close(f1);
close(f2);
end.


Last edit: 2014-01-05 09:49:00
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.