Результати турніру "Проблемний дует"

Зведена таблиця результатів

Учасник
hay schools Всього
Нагін Сергій 50 50 100
Лавриненко Марк 40 50 90
Лукянець Валентин 40 50 90
Оришин Сергій 40 50 90
Рубаненко Роман 40 50 90
Шевчук Олександр Олегович 50 37 87
Лоран Сергій 25 50 75
Макаревич Андрій Олегович 25 37 62
Франчук Роман Павлович 0 44 44
Ярушинська Люба 40 N 40
Кондаков Олександр Володимирович 7 15 22
Старушок Назар Юрійович 12 N 12
Березін Дмитро Андрійович 7 N 7

 

Результати тестів по задачі "Hay"

Учасник
01
02
03
04
05
06
07
08
09
10
11
Франчук Роман Павлович T T T T R R R R R R R
Лоран Сергій + + + + + + + - - - -
Шевчук Олександр Олегович + + + + + + + + + + +
Старушок Назар Юрійович + - - - - - - - - - +
Ярушинська Люба + + + + + + + + + + T
Макаревич Андрій Олегович + + + + + T + + T T T
Кондаков Олександр Володимирович + + + T T T T T T T T
Березін Дмитро Андрійович + + + T T T T T T T T
Лавриненко Марк + + + + + + + + + + T
Лукянець Валентин + + + + + + + + + + T
Оришин Сергій + + + + + + + + + + T
Нагін Сергій + + + + + + + + + + +
Рубаненко Роман + + + + + + + + + + T

 

Результати тестів по задачі "Schools"

Учасник
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
Франчук Роман Павлович + + + + + + + + - - + + + + +
Лоран Сергій + + + + + + + + + + + + + + +
Шевчук Олександр Олегович + R + + + + + + R R R + + + +
Старушок Назар Юрійович N N N N N N N N N N N N N N N
Ярушинська Люба N N N N N N N N N N N N N N N
Макаревич Андрій Олегович + - + + + + + + - - - + + + +
Кондаков Олександр Володимирович + + + + T + T T T T T T R R R
Березін Дмитро Андрійович N N N N N N N N N N N N N N N
Лавриненко Марк + + + + + + + + + + + + + + +
Лукянець Валентин + + + + + + + + + + + + + + +
Оришин Сергій + + + + + + + + + + + + + + +
Нагін Сергій + + + + + + + + + + + + + + +
Рубаненко Роман + + + + + + + + + + + + + + +

Розбаловка по задачах:

Hay - 2 2 3 3 5 5 5 5 5 5 10
Час для одного тесту - 800mc

Schools - 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4
Час для одного тесту - 500mc

Легенда:
T - перевищений ліміт часу
W - помилка вводу-виводу, використання модуля Crt.
R - помилка виконання
N - відсутній розв'язок
P - штраф


Hay (автор)

{ Free Pascal }
var
  c,n,v,i,j:longint;
  a:array[0..50000]of boolean;
  fi,fo:text;
begin
  assign(fi,'hay.in');reset(fi);
  assign(fo,'hay.out');rewrite(fo);
  a[0]:=true;
  readln(fi,c,n);
  for i:=1 to n do  begin
     readln(fi,v);
     for j:=c downto v do if a[j-v] then a[j]:=true;
     if a[c] then break;
   end;
  for i:=c downto 1 do if a[i] then break;
  writeln(fo,i);
  close(fi); close(fo);
end.
  
	   

 

Schools (Нагін Сергій - переможець турніру)

{ Free Pascal }
var num,a,b,c:array[0..10000]of longint;
ij,min,xx,yy,n,m,i,j,k,ka:longint;
u,r:array[0..10000]of boolean;
    procedure sort(l,r: longint);
      var
         i,j,x,y: longint;
      begin
         i:=l;
         j:=r;
         x:=c[(l+r) div 2];
         repeat
           while c[i]<x do
            inc(i);
           while x<c[j] do
            dec(j);
           if i<=j then
             begin
                y:=a[i];
                a[i]:=a[j];
                a[j]:=y;
                y:=b[i];
                b[i]:=b[j];
                b[j]:=y;
                y:=c[i];
                c[i]:=c[j];
                c[j]:=y;
                inc(i);
                dec(j);
             end;
         until i>j;
         if l<j then
           sort(l,j);
         if i<r then
           sort(i,r);
      end;

 begin
  assign(input,'schools.in');reset(input);
  assign(output,'schools.out');rewrite(output);
  read(n,m);
  for i:=1 to m do
    read(a[i],b[i],c[i]);
  sort(1,m);
  for i:=1 to n do num[i]:=i;
  i:=1;
  k:=0;
  ka:=0;
  fillchar(u,sizeof(u),false);
  while (i<=m)and(k<n-1)do
    begin
     if num[a[i]]<>num[b[i]]
      then
       begin
        xx:=num[a[i]];
        yy:=num[b[i]];
        if xx>yy then
          begin
           j:=xx;
           xx:=yy;
           yy:=j;
          end;
        for j:=1 to n do
          if num[j]=yy then num[j]:=xx;
        k:=k+1;
        u[i]:=true;
        ka:=ka+c[i];
       end;
     inc(i);
    end;
  write(ka,' ');
  min:=1000000000;
  for ij:=1 to m do
    if u[ij] then
      begin
       fillchar(r,sizeof(r),true);
       r[ij]:=false;
       for i:=1 to n do num[i]:=i;
       i:=1;
       k:=0;
       ka:=0;
       while (i<=m)and(k<n-1)do
        begin
         if (num[a[i]]<>num[b[i]])and(r[i])
                then
                   begin
                     xx:=num[a[i]];
                     yy:=num[b[i]];
                     if xx>yy then
                               begin
                                j:=xx;
                                xx:=yy;
                                yy:=j;
                               end;
                     for j:=1 to n do
                       if num[j]=yy then num[j]:=xx;
                     k:=k+1;
                     ka:=ka+c[i];
                   end;
         inc(i);
        end;
       if k=n-1 then
        begin
         if ka<min then min:=ka;
        end;
      end;
  writeln(min);
  close(input);close(output);
 end.