Задания
Версия для печати и копирования в MS Word
Тип Д27 C4 № 9378
i

В фи­зи­че­ской ла­бо­ра­то­рии про­во­дит­ся дол­го­вре­мен­ный экс­пе­ри­мент по изу­че­нию гра­ви­та­ци­он­но­го поля Земли. По ка­на­лу связи каж­дую ми­ну­ту в ла­бо­ра­то­рию пе­ре­даётся по­ло­жи­тель­ное целое число – те­ку­щее по­ка­за­ние при­бо­ра «Сигма 2015». Ко­ли­че­ство пе­ре­да­ва­е­мых чисел в серии из­вест­но и не пре­вы­ша­ет 10 000. Все числа не пре­вы­ша­ют 1000. Вре­ме­нем, в те­че­ние ко­то­ро­го про­ис­хо­дит пе­ре­да­ча, можно пре­не­бречь.

Не­об­хо­ди­мо вы­чис­лить «бета-зна­че­ние» серии по­ка­за­ний при­бо­ра – ми­ни­маль­ное чётное про­из­ве­де­ние двух по­ка­за­ний, между мо­мен­та­ми пе­ре­да­чи ко­то­рых про­шло не менее 6 минут. Если по­лу­чить такое про­из­ве­де­ние не удаётся, ответ счи­та­ет­ся рав­ным –1.

Вам пред­ла­га­ет­ся два за­да­ния, свя­зан­ных с этой за­да­чей: за­да­ние А и за­да­ние Б. Вы мо­же­те ре­шать оба за­да­ния или одно из них по сво­е­му вы­бо­ру. Ито­го­вая оцен­ка вы­став­ля­ет­ся как мак­си­маль­ная из оце­нок за за­да­ния А и Б. Если ре­ше­ние од­но­го из за­да­ний не пред­став­ле­но, то счи­та­ет­ся, что оцен­ка за это за­да­ние – 0 бал­лов. За­да­ние Б яв­ля­ет­ся усложнённым ва­ри­ан­том за­да­ния А, оно со­дер­жит до­пол­ни­тель­ные тре­бо­ва­ния к про­грам­ме.

А. На­пи­ши­те на любом языке про­грам­ми­ро­ва­ния про­грам­му для ре­ше­ния по­став­лен­ной за­да­чи, в ко­то­рой вход­ные дан­ные будут за­по­ми­нать­ся в мас­си­ве, после чего будут про­ве­ре­ны все воз­мож­ные пары эле­мен­тов. Перед про­грам­мой ука­жи­те вер­сию языка про­грам­ми­ро­ва­ния.

Обя­за­тель­ноука­жи­те, что про­грам­ма яв­ля­ет­ся ре­ше­ни­ем за­да­ния А.

Мак­си­маль­ная оцен­ка за вы­пол­не­ние за­да­ния А – 2 балла.

Б. На­пи­ши­те про­грам­му для ре­ше­ния по­став­лен­ной за­да­чи, ко­то­рая будет эф­фек­тив­на как по вре­ме­ни, так и по па­мя­ти (или хотя бы по одной из этих ха­рак­те­ри­стик).

Про­грам­ма счи­та­ет­ся эф­фек­тив­ной по вре­ме­ни, если время ра­бо­ты

про­грам­мы про­пор­ци­о­наль­но ко­ли­че­ству по­лу­чен­ных по­ка­за­ний при­бо­ра N, т. е. при уве­ли­че­нии N в k раз время ра­бо­ты про­грам­мы долж­но уве­ли­чи­вать­ся не более чем в k раз.

Про­грам­ма счи­та­ет­ся эф­фек­тив­ной по па­мя­ти, если раз­мер па­мя­ти, ис­поль­зо­ван­ной в про­грам­ме для хра­не­ния дан­ных, не за­ви­сит от числа N и не пре­вы­ша­ет 1 ки­ло­бай­та.

Перед про­грам­мой ука­жи­те вер­сию языка про­грам­ми­ро­ва­ния и крат­ко опи­ши­те ис­поль­зо­ван­ный ал­го­ритм.

Обя­за­тель­но ука­жи­те, что про­грам­ма яв­ля­ет­ся ре­ше­ни­ем за­да­ния Б.

Мак­си­маль­ная оцен­ка за пра­виль­ную про­грам­му, эф­фек­тив­ную по вре­ме­ни и по па­мя­ти, – 4 балла.

Мак­си­маль­ная оцен­ка за пра­виль­ную про­грам­му, эф­фек­тив­ную по вре­ме­ни, но не­эф­фек­тив­ную по па­мя­ти, – 3 балла. На­по­ми­на­ем! Не за­будь­те ука­зать, к ка­ко­му за­да­нию от­но­сит­ся каж­дая из пред­став­лен­ных Вами про­грамм.

Вход­ные дан­ные пред­став­ле­ны сле­ду­ю­щим об­ра­зом. В пер­вой стро­ке задаётся число N – общее ко­ли­че­ство по­ка­за­ний при­бо­ра. Га­ран­ти­ру­ет­ся, что N > 6. В каж­дой из сле­ду­ю­щих N строк задаётся одно по­ло­жи­тель­ное целое число – оче­ред­ное по­ка­за­ние при­бо­ра.

При­мер вход­ных дан­ных:

11

12

45

5

3

17

23

21

20

19

18

17

Про­грам­ма долж­на вы­ве­сти одно число – опи­сан­ное в усло­вии про­из­ве­де­ние либо –1, если по­лу­чить такое про­из­ве­де­ние не удаётся.

При­мер вы­ход­ных дан­ных для при­ведённого выше при­ме­ра вход­ных дан­ных:

54

Спрятать решение

Ре­ше­ние.

За­да­ние Б (ре­ше­ние для за­да­ния А при­ве­де­но ниже, см. про­грам­му 4). Чтобы про­из­ве­де­ние было чётным, хотя бы один со­мно­жи­тель дол­жен быть чётным, по­это­му при по­ис­ке под­хо­дя­щих про­из­ве­де­ний чётные по­ка­за­ния при­бо­ра можно рас­смат­ри­вать в паре с лю­бы­ми дру­ги­ми, а нечётные – толь­ко с чётными.

Для каж­до­го по­ка­за­ния с но­ме­ром k, на­чи­ная с k = 7, рас­смот­рим все до­пу­сти­мые по усло­ви­ям за­да­чи пары, в ко­то­рых дан­ное по­ка­за­ние по­лу­че­но вто­рым. Ми­ни­маль­ное про­из­ве­де­ние из всех этих пар будет по­лу­че­но, если пер­вым в паре будет взято ми­ни­маль­ное под­хо­дя­щее по­ка­за­ние среди всех, по­лу­чен­ных от на­ча­ла приёма и до по­ка­за­ния с но­ме­ром k – 6. Если оче­ред­ное по­ка­за­ние чётное, ми­ни­маль­ное среди преды­ду­щих может быть любым, если нечётное – толь­ко чётным.

Для по­лу­че­ния эф­фек­тив­но­го по вре­ме­ни ре­ше­ния нужно по мере ввода дан­ных пом­нить аб­со­лют­ное ми­ни­маль­ное и ми­ни­маль­ное чётное по­ка­за­ние на каж­дый мо­мент вре­ме­ни, каж­дое вновь по­лу­чен­ное по­ка­за­ние умно­жать на со­от­вет­ству­ю­щий ему ми­ни­мум, имев­ший­ся на 6 эле­мен­тов ранее, и вы­брать ми­ни­маль­ное из всех таких про­из­ве­де­ний.

По­сколь­ку каж­дое те­ку­щее ми­ни­маль­ное по­ка­за­ние ис­поль­зу­ет­ся после ввода ещё 6 эле­мен­тов и после этого ста­но­вит­ся не­нуж­ным, до­ста­точ­но хра­нить толь­ко 6 по­след­них ми­ни­му­мов. Для этого можно ис­поль­зо­вать мас­сив из 6 эле­мен­тов и цик­ли­че­ски за­пол­нять его по мере ввода дан­ных. Раз­мер этого мас­си­ва не за­ви­сит от об­ще­го ко­ли­че­ства введённых по­ка­за­ний, по­это­му такое ре­ше­ние будет эф­фек­тив­ным не толь­ко по вре­ме­ни, но и по па­мя­ти. Чтобы хра­нить аб­со­лют­ный и чётный ми­ни­му­мы, нужно ис­поль­зо­вать два таких мас­си­ва. Ниже при­во­дит­ся при­мер такой про­грам­мы, на­пи­сан­ной на ал­го­рит­ми­че­ском языке.

 

При­мер 1. При­мер пра­виль­ной про­грам­мы на ал­го­рит­ми­че­ском языке. Про­грам­ма эф­фек­тив­на и по вре­ме­ни, и по па­мя­ти.

алг

нач

    цел s = 6 | тре­бу­е­мое рас­сто­я­ние между по­ка­за­ни­я­ми

    цел amax = 1001 | боль­ше мак­си­маль­но воз­мож­но­го по­ка­за­ния

    цел N

    ввод N

    цел a | оче­ред­ное по­ка­за­ние при­бо­ра

    цел­таб мини[0:s-1] | те­ку­щие ми­ни­му­мы по­след­них s эле­мен­тов

    цел­таб ми­ни­чет[0:s-1] | чётные ми­ни­му­мы по­след­них s эле­мен­тов

    цел i

    | вво­дим пер­вые s по­ка­за­ний, фик­си­ру­ем ми­ни­му­мы

    цел ма; ма := amax | ми­ни­маль­ное по­ка­за­ние

    цел мчет; мчет := amax | ми­ни­маль­ное чётное по­ка­за­ние

    нц для i от 1 до s

        ввод а

        ма := imin(ма, a)

        если mod(a,2) = 0 то мчет := imin(мчет,a) все

        мини[mod(i, s)] := ма

        ми­ни­чет[mod(i, s)] := мчет

    кц

    цел мп = amax*amax | ми­ни­маль­ное зна­че­ние про­из­ве­де­ния

    цел п

    нц для i от s+1 до N

        ввод а

        если mod(a,2)=0

            то п := a * мини[mod(i, s)]

            иначе если мчет < amax

                то п := a * ми­ни­чет[mod(i, s)]

                иначе п := amax*amax;

            все

        все

        мп := imin(мп, п)

        ма := imin(ма, a)

        если mod(a,2) = 0 то мчет := imin(мчет,a) все

        мини[mod(i, s)] := ма

        ми­ни­чет[mod(i, s)] := мчет

    кц

    если мп = amax*amax то мп:=-1 все

    вывод мп

кон

 

Воз­мож­ны и дру­гие ре­а­ли­за­ции. На­при­мер, вме­сто цик­ли­че­ско­го за­пол­не­ния мас­си­ва можно каж­дый раз сдви­гать его эле­мен­ты. В при­ведённом ниже при­ме­ре хра­нят­ся и сдви­га­ют­ся не ми­ни­му­мы, а ис­ход­ные зна­че­ния. Это тре­бу­ет чуть мень­ше па­мя­ти (до­ста­точ­но од­но­го мас­си­ва вме­сто двух), но по вре­ме­ни ре­ше­ние со сдви­га­ми менее эф­фек­тив­но, чем с цик­ли­че­ским за­пол­не­ни­ем. Од­на­ко время ра­бо­ты остаётся про­пор­ци­о­наль­ным N, по­это­му мак­си­маль­ная оцен­ка за такое ре­ше­ние тоже со­став­ля­ет 4 балла.

 

Про­грам­ма 2. При­мер пра­виль­ной про­грам­мы на языке Пас­каль.

Про­грам­ма ис­поль­зу­ет сдви­ги, но эф­фек­тив­на по вре­ме­ни и по па­мя­ти

const s = 6; {тре­бу­е­мое рас­сто­я­ние между по­ка­за­ни­я­ми}

        amax = 1001; {боль­ше мак­си­маль­но воз­мож­но­го по­ка­за­ния}

var

    N: integer;

    a: array[1..s] of integer; {хра­не­ние s по­ка­за­ний при­бо­ра}

    a_: integer; {ввод оче­ред­но­го по­ка­за­ния}

    ma: integer; {ми­ни­маль­ное число без s по­след­них}

    me: integer; {ми­ни­маль­ное чётное число без s по­след­них}

    mp: integer; {ми­ни­маль­ное зна­че­ние про­из­ве­де­ния}

    p: longint;

    i, j: integer;

begin

    readln(N);

    {Ввод пер­вых s чисел}

    for i:=1 to s do readln(a[i]);

    {Ввод осталь­ных зна­че­ний, поиск ми­ни­маль­но­го про­из­ве­де­ния}

    ma := amax; me := amax;

    mp :=amax*amax;

    for i := s + 1 to N do begin

        readln(a_);

        if a[1] < ma then ma := a[1];

        if (a[1] mod 2 = 0) and (a[1] < me) then me := a[1];

        if a_ mod 2 = 0 then p := a_ * ma

        else if me < amax then p := a_ * me

        else p := amax* amax;

        if (p < mp) then mp := p;

        {сдви­га­ем эле­мен­ты вспо­мо­га­тель­но­го мас­си­ва влево}

        for j := 1 to s - 1 do

            a[j] := a[j + 1];

        a[s] := a_

    end;

    if mp = amax*amax then mp:=-1;

    writeln(mp)

end.

Если вме­сто не­боль­шо­го мас­си­ва фик­си­ро­ван­но­го раз­ме­ра (цик­ли­че­ско­го или со сдви­га­ми) хра­нят­ся все ис­ход­ные дан­ные (или все те­ку­щие ми­ни­му­мы), про­грам­ма со­хра­ня­ет эф­фек­тив­ность по вре­ме­ни, но ста­но­вит­ся не­эф­фек­тив­ной по па­мя­ти, так как тре­бу­е­мая па­мять растёт про­пор­ци­о­наль­но N. Ниже при­во­дит­ся при­мер такой про­грам­мы на языке Пас­каль. По­доб­ные (и ана­ло­гич­ные по сути) про­грам­мы оце­ни­ва­ют­ся не выше 3 бал­лов.

 

Про­грам­ма 3. При­мер пра­виль­ной про­грам­мы на языке Пас­каль. Про­грам­ма эф­фек­тив­на по вре­ме­ни, но не­эф­фек­тив­на по па­мя­ти

const s = 6; {тре­бу­е­мое рас­сто­я­ние между по­ка­за­ни­я­ми}

        amax = 1001; {боль­ше мак­си­маль­но воз­мож­но­го по­ка­за­ния}

var

    N, p, i: integer;

    a: array[1..10000] of integer; {все по­ка­за­ния при­бо­ра}

    ma: integer; {ми­ни­маль­ное число без s по­след­них}

    me: integer; {ми­ни­маль­ное чётное число без s по­след­них}

    mp: integer; {ми­ни­маль­ное зна­че­ние про­из­ве­де­ния}

begin

    readln(N);

    {Ввод всех по­ка­за­ний при­бо­ра}

    for i:=1 to N do readln(a[i]);

    ma := amax;

    me := amax;

    mp := amax*amax;

    for i := s + 1 to N do

    begin

        if a[i-s] < ma then ma := a[i-s];

        if (a[i-s] mod 2 = 0) and (a[i-s] < me) then

            me := a[i-s];

        if a[i] mod 2 = 0 then p := a[i] * ma

        else if me < amax then p := a[i] * me

        else p := amax * amax;

        if (p < mp) then mp := p

    end;

    if mp = amax*amax then mp := -1;

    writeln(mp)

end.

Воз­мож­но также пе­ре­бор­ное ре­ше­ние, в ко­то­ром на­хо­дят­ся про­из­ве­де­ния всех воз­мож­ных пар и из них вы­би­ра­ет­ся ми­ни­маль­ное. Ниже (см. про­грам­му 4) при­ведён при­мер по­доб­но­го ре­ше­ния. Это (и ана­ло­гич­ные ему) ре­ше­ние не­эф­фек­тив­но ни по вре­ме­ни, ни по па­мя­ти. Оно яв­ля­ет­ся ре­ше­ни­ем за­да­ния А, но не яв­ля­ет­ся ре­ше­ни­ем за­да­ния Б. Оцен­ка за такое ре­ше­ние – 2 балла.

 

Про­грам­ма 4. При­мер пра­виль­ной про­грам­мы на языке Пас­каль. Про­грам­ма не­эф­фек­тив­на ни по вре­ме­ни, ни по па­мя­ти

const s = 6; {тре­бу­е­мое рас­сто­я­ние между по­ка­за­ни­я­ми}

var

    N: integer;

    a: array[1..10000] of integer; {все по­ка­за­ния при­бо­ра}

    mp: integer; {ми­ни­маль­ное зна­че­ние про­из­ве­де­ния}

    i, j: integer;

begin

    readln(N);

    {Ввод зна­че­ний при­бо­ра}

    for i:=1 to N do

        readln(a[i]);

    mp := 1000 * 1000 + 1;

    for i := 1 to N-s do begin

        for j := i+s to N do begin

            if (a[i]*a[j] mod 2 = 0) and (a[i]*a[j] < mp)

                then mp := a[i]*a[j]

        end;

    end;

    if mp = 1000 * 1000 + 1 then mp := -1;

    writeln(mp)

end.

 

При­во­дим эф­фек­тив­ное ре­ше­ние Ни­ко­лая Ар­тю­хи­на на C++.

#include <iostream>

using namespace std;

int main()

{

     int n, x, mp=1000001, ia=0, s=6, a[6], mn=1001, mch=1001;

     cin >> n;

     for(int i=0;i<s;i++){

         cin >> a[i];

     }

     for(int i=s;i<n;i++){

         cin >> x;

         if((a[ia]%2==0)&&(a[ia]<mch)) mch = a[ia];

         else if ((a[ia]%2!=0)&&(a[ia]<mn)) mn = a[ia];

         if(x%2==0){

                if((x*mn<x*mch)&&(x*mn<mp)) mp = x*mn;

                else if ((x*mch<x*mn)&&(x*mch<mp)) mp=x*mch;

         }

         else if ((x%2!=0)&&(x*mch<mp)) mp=x*mch;

         a[ia]=x;

         ia=(ia+1)%s;

     }

     if(mp!=1000001) cout << mp;

     else cout <<"-1";

 

     return 0;

}

 

 

При­во­дим эф­фек­тив­ное ре­ше­ние Алек­сандра Цы­ган­ко­ва на Python.

a = []

n = int(input())

m = 10 ** 7

mx = 10 ** 7

mx1 = 10 ** 7

for i in range(6):

    a.append(int(input()))

for i in range(6, n):

    x = int(input())

    if a[i % 6] % 2 == 0 and a[i % 6] < mx:

        mx = a[i % 6]

    elif a[i % 6] % 2 != 0 and a[i % 6] < mx1:

        mx1 = a[i % 6]

    if x % 2 == 0 and min(mx, mx1) * x < m:

        m = min(mx, mx1) * x

    elif x % 2 != 0 and mx * x < m:

        m = mx * x

    a[i % 6] = x

if m == 10 ** 7:

    print(-1)

else:

    print(m)

Спрятать критерии
Критерии проверки:

Пред­ва­ри­тель­ные за­ме­ча­ния.

1. В за­да­че есть два за­да­ния (А и Б). Со­от­вет­ствен­но, уче­ник может пред­ста­вить две про­грам­мы. В каж­дой из про­грамм долж­но быть ука­за­но, ре­ше­ни­ем ка­ко­го из за­да­ний она яв­ля­ет­ся. Если в ра­бо­те пред­став­ле­на одна про­грам­ма, то в ней также долж­но быть ука­за­но, ре­ше­ни­ем ка­ко­го из за­да­ний она яв­ля­ет­ся.

2. Если уче­ник не ука­зал, к ка­ко­му за­да­нию от­но­сит­ся про­грам­ма, или можно пред­по­ло­жить, что уче­ник ошиб­ся в иден­ти­фи­ка­ции про­грамм, не­об­хо­ди­мо сле­до­вать при­ведённым ниже ин­струк­ци­ям.

Слу­чай 2.1. Уче­ник пред­ста­вил толь­ко одну про­грам­му. Сле­ду­ет рас­смат­ри­вать про­грам­му как ре­ше­ние за­да­ния Б

и оце­ни­вать её по со­от­вет­ству­ю­щим кри­те­ри­ям.

Слу­чай 2.2. Уче­ник пред­ста­вил две про­грам­мы, но ука­за­ние за­да­ния есть толь­ко для одной из про­грамм. Сле­ду­ет рас­смат­ри­вать вто­рую про­грам­му как ответ на остав­ше­е­ся за­да­ние.

Слу­чай 2.3. Уче­ник пред­ста­вил две про­грам­мы; ни для одной из них за­да­ние не ука­за­но, или в обоих ре­ше­ни­ях ука­за­но одно и то же за­да­ние. Сле­ду­ет первую (по по­ряд­ку в пред­став­лен­ных уче­ни­ком ма­те­ри­а­лах) про­грам­му рас­смат­ри­вать как ответ на за­да­ние А, а вто­рую – как ответ на за­да­ние Б.

Слу­чай 2.4. Уче­ник пред­ста­вил более двух про­грамм. Сле­ду­ет рас­смат­ри­вать толь­ко две по­след­ние про­грам­мы и со­от­но­сить их с за­да­ни­я­ми по пра­ви­лам 2.1–2.3.

Слу­чай 2.5. Ре­ше­ние, пред­став­лен­ное в ка­че­стве ре­ше­ния за­да­ния А, по кри­те­ри­ям для за­да­ния Б может быть оце­не­но в 3 или 4 балла. При этом ре­ше­ние, пред­став­лен­ное в ка­че­стве ре­ше­ния за­да­ния Б, по­лу­чи­ло мень­шую оцен­ку.

Сле­ду­ет счи­тать, что уче­ник пе­ре­пу­тал обо­зна­че­ния за­да­ний и оце­ни­вать ре­ше­ние, пред­став­лен­ное как ре­ше­ние за­да­ния А, по кри­те­ри­ям за­да­ния Б.

НА­ПО­МИ­НА­ЕМ! Ито­го­вый балл за за­да­чу – это боль­ший из бал­лов, по­лу­чен­ных уче­ни­ком за каж­дое из двух пред­став­лен­ных ре­ше­ний.

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
По­яс­не­ния для про­ве­ря­ю­щих.

1. За­да­ние Б яв­ля­ет­ся услож­не­ни­ем за­да­ния А. Если в ка­че­стве ре­ше­ния за­да­ния Б пред­став­ле­но ре­ше­ние за­да­ния А, то со­глас­но при­ведённым ниже кри­те­ри­ям его оцен­ка будет такой же, как если бы это ре­ше­ние было пред­став­ле­но в ка­че­стве ре­ше­ния за­да­ния А.

2. Два за­да­ния (и, со­от­вет­ствен­но, воз­мож­ность для эк­за­ме­ну­е­мо­го пред­ста­вить две про­грам­мы) дают уче­ни­ку воз­мож­ность (при его же­ла­нии) сна­ча­ла на­пи­сать менее слож­ное и менее эф­фек­тив­ное ре­ше­ние (за­да­ние А), ко­то­рое даёт ему право по­лу­чить 2 балла, а затем при­сту­пить к по­ис­ку более эф­фек­тив­но­го ре­ше­ния.

3. При­ведённые в п. 2.1–2.5 пра­ви­ла имеют целью из­бе­жать сни­же­ния оцен­ки из-за того, что уче­ник пе­ре­пу­тал обо­зна­че­ния за­да­ний

Кри­те­рии оце­ни­ва­ния за­да­ния А
Про­грам­ма ре­ша­ет по­став­лен­ную за­да­чу для любых со­от­вет­ству­ю­щих усло­вию вход­ных дан­ных. На­при­мер, до­пус­ка­ет­ся пе­ре­бор­ное ре­ше­ние, ана­ло­гич­ное при­ведённой выше про­грам­ме 4. До­пус­ка­ет­ся до семи син­так­си­че­ских и при­рав­нен­ных к ним оши­бок (см. кри­те­рии оце­ни­ва­ния за­да­ния Б на 4 балла).

До­пус­ка­ет­ся до двух со­дер­жа­тель­ных оши­бок, опи­сан­ных в кри­те­ри­ях оце­ни­ва­ния за­да­ния Б на 3 балла

2
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 2 балла. Из опи­са­ния ал­го­рит­ма или общей струк­ту­ры про­грам­мы видно, что эк­за­ме­ну­е­мый в целом пра­виль­но пред­став­ля­ет путь ре­ше­ния за­да­чи не­за­ви­си­мо от эф­фек­тив­но­сти. При этом про­грам­ма может быть пред­став­ле­на от­дель­ны­ми фраг­мен­та­ми, без огра­ни­че­ний на ко­ли­че­ство син­так­си­че­ских и со­дер­жа­тель­ных оши­бок. 1 балл ста­вит­ся также за ре­ше­ния, вер­ные лишь в част­ных слу­ча­ях1
Не вы­пол­не­ны кри­те­рии, поз­во­ля­ю­щие по­ста­вить 1 или 2 балла0
Мак­си­маль­ный балл для за­да­ния А2

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­ния ББаллы
Про­грам­ма пра­виль­но ра­бо­та­ет для любых со­от­вет­ству­ю­щих усло­вию вход­ных дан­ных и при этом эф­фек­тив­на как по вре­ме­ни, так и по па­мя­ти, т.е. не ис­поль­зу­ют­ся мас­си­вы и дру­гие струк­ту­ры дан­ных, раз­мер ко­то­рых за­ви­сит от ко­ли­че­ства вход­ных эле­мен­тов, а время ра­бо­ты про­пор­ци­о­наль­но этому ко­ли­че­ству. Воз­мож­но ис­поль­зо­ва­ние мас­си­вов и ди­на­ми­че­ских струк­тур дан­ных (на­при­мер, кон­тей­не­ры STL в про­грам­ме на языке C++) при усло­вии, что в них в каж­дый мо­мент вре­ме­ни хра­нит­ся фик­си­ро­ван­ное ко­ли­че­ство эле­мен­тов, тре­бу­ю­щих для хра­не­ния мень­ше 1кб (ми­ни­маль­но не­об­хо­ди­мое ко­ли­че­ство – шесть; до­пус­ка­ет­ся ре­ше­ние с за­па­сом).

Про­грам­ма может со­дер­жать не более трёх син­так­си­че­ских оши­бок сле­ду­ю­щих видов:

– про­пу­щен или не­вер­но ука­зан знак пунк­ту­а­ции (за­пя­тая, точка с за­пя­той, скоб­ки и т.д.);

– не­вер­но на­пи­са­но или про­пу­ще­но слу­жеб­ное слово языка про­грам­ми­ро­ва­ния;

– не опи­са­на или не­вер­но опи­са­на пе­ре­мен­ная;

– при­ме­ня­ет­ся опе­ра­ция, не­до­пу­сти­мая для со­от­вет­ству­ю­ще­го типа дан­ных.

К син­так­си­че­ским ошиб­кам при­рав­ни­ва­ет­ся ис­поль­зо­ва­ние не­вер­но­го типа дан­ных (на­при­мер, ис­поль­зо­ва­ние це­ло­го типа вме­сто ве­ще­ствен­но­го для пред­став­ле­ния дан­ных при вводе и об­ра­бот­ке). Если одна и та же ошиб­ка встре­ча­ет­ся не­сколь­ко раз, она счи­та­ет­ся за одну ошиб­ку

4
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 4 балла. Про­грам­ма пра­виль­но ра­бо­та­ет для любых со­от­вет­ству­ю­щих усло­вию вход­ных дан­ных, время ра­бо­ты про­пор­ци­о­наль­но ко­ли­че­ству вход­ных эле­мен­тов. Раз­мер ис­поль­зу­е­мой па­мя­ти не имеет зна­че­ния и может за­ви­сеть от объёма вход­ных дан­ных. В част­но­сти, до­пус­ка­ет­ся ис­поль­зо­ва­ние од­но­го или не­сколь­ких мас­си­вов раз­ме­ра N (как в при­ведённой выше про­грам­ме 3).

Про­грам­ма может со­дер­жать не более пяти син­так­си­че­ских и при­рав­нен­ных к ним оши­бок, опи­сан­ных в кри­те­ри­ях на 4 балла. Кроме того, до­пус­ка­ет­ся на­ли­чие не более одной со­дер­жа­тель­ной ошиб­ки из числа сле­ду­ю­щих:

– не­вер­ная ини­ци­а­ли­за­ция при по­ис­ке ми­ни­маль­но­го зна­че­ния;

– не­вер­ная об­ра­бот­ка на­чаль­ных эле­мен­тов дан­ных, ко­то­рая может, на­при­мер, при­ве­сти к по­лу­че­нию оши­боч­но­го от­ве­та при 6 < N < 12;

– не­точ­ное опре­де­ле­ние гра­ниц мас­си­ва, выход за гра­ни­цу мас­си­ва (на­при­мер, опи­сан мас­сив с гра­ни­ца­ми от 1 до 6,

а ре­аль­но ис­поль­зу­ет­ся от 0 до 5 или на­о­бо­рот); – вы­чис­лен­ный ин­декс эле­мен­та мас­си­ва на 1 от­ли­ча­ет­ся от вер­но­го;

– ис­поль­зу­ет­ся опе­ра­ция ”<” вме­сто ”<=”, ”or” вме­сто ”and” и т.п.;

– не учи­ты­ва­ет­ся, что за­дан­ные по­ка­за­ния могут на­чи­нать­ся с од­но­го или не­сколь­ких чётных чисел;

– не учи­ты­ва­ет­ся, что для дан­но­го на­бо­ра по­ка­за­ний может не быть ни од­но­го удо­вле­тво­ря­ю­ще­го усло­ви­ям про­из­ве­де­ния

3
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 3 или 4 балла. Про­грам­ма ра­бо­та­ет в целом верно, эф­фек­тив­но или нет. На­при­мер, до­пус­ка­ет­ся пе­ре­бор­ное ре­ше­ние, ана­ло­гич­ное при­ведённой выше про­грам­ме 4.

До­пус­ка­ет­ся до семи син­так­си­че­ских и при­рав­нен­ных к ним

оши­бок (см. кри­те­рии на 4 балла).

До­пус­ка­ет­ся до двух со­дер­жа­тель­ных оши­бок, опи­сан­ных в кри­те­ри­ях на 3 балла

2
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 2, 3 или 4 балла. Из опи­са­ния ал­го­рит­ма или общей струк­ту­ры про­грам­мы видно, что эк­за­ме­ну­е­мый в целом пра­виль­но пред­став­ля­ет путь ре­ше­ния за­да­чи не­за­ви­си­мо от эф­фек­тив­но­сти. При этом про­грам­ма может быть пред­став­ле­на от­дель­ны­ми фраг­мен­та­ми, без огра­ни­че­ний на ко­ли­че­ство син­так­си­че­ских и со­дер­жа­тель­ных оши­бок. 1 балл ста­вит­ся также за ре­ше­ния, вер­ные лишь в част­ных слу­ча­ях1
Не вы­пол­не­ны кри­те­рии, поз­во­ля­ю­щие по­ста­вить 1, 2, 3 или 4 балла0
Мак­си­маль­ный балл для за­да­ния Б4
Ито­го­вый мак­си­маль­ный балл4

Аналоги к заданию № 9378: 12443 Все

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ—2016 по ин­фор­ма­ти­ке