Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted by Emkas ( 16 years ago )
program PUN;

const MAXI = 1000000;

function MAX(i,j: longint):longint;
begin
    if (i>j) then MAX:=i
    else MAX:=j;
end;


var
    tablica : array [1..MAXI]of integer;
    lIteracji, wynik, suma, aktualnaSuma, polowaOkregu : longint;
    i,j:integer;

begin
    suma:=0;
    readln(lIteracji);
    for i:=1 to lIteracji do // wczytywanie danych
    begin
        read(tablica[i]);
        suma:=suma+tablica[i];
    end;
    
    if (suma mod 2 = 0) then polowaOkregu:= suma div 2 // oblicznie polowy dlugosci okregu
    else polowaOkregu:= suma div 2 + 1;

    j:=1;
    i:=1;
    aktualnaSuma:=0;
    wynik:=0;
    while (j <= lIteracji) and (i <= lIteracji) do
    begin
        Inc(aktualnaSuma,tablica[j]);
        if (aktualnaSuma < polowaOkregu) then begin
            wynik:=MAX(wynik, aktualnaSuma);
            j:=j+1;
        end
        else begin
            wynik:= MAX(wynik, suma - aktualnaSuma);
            aktualnaSuma:=aktualnaSuma - tablica[i];
            aktualnaSuma:=aktualnaSuma - tablica[j];                        
            i:=i+1;            
        end;
    end;
    
    write(wynik);    
end.

 

Revise this Paste

Your Name: Code Language: