program Ciagi;// runda 5 [A] 16.05.2014 const nmax=100000; type Ti=longint; Tii=extended; TCia = array[1..nmax] of Ti; TabCia = array[1..5] of TCia; var n,k,i,j:Ti; A:TabCia; b:TCia; procedure B2(a1,a2:Tcia; var b:Tcia); var i,sr,del1,del2,lk,lko:Ti; sum1,sum2:Tii; bo:array[1..nmax] of boolean; begin sum1:=0; sum2:=0;//dot. ciągów a1,a2 for i:=1 to n do begin sr:=(a1[i]+a2[i])div 2; b[i]:=sr; bo[i]:=a1[i]+a2[i]<>2*sr; del1:=abs(a1[i]-sr); del2:=abs(a2[i]-sr); sum1+=del1; sum2+=del2 //odległości end; lko:=round(abs(sum1-sum2))div 2; lk:=0;//licznik korekt if lko>0 then begin for i:=1 to n do if bo[i] then begin lk+=1; if 2*b[i]<a1[i]+a2[i] then b[i]+=1 else b[i]-=1; if lk=lko then break; end//i end;//korekt end;//B2 begin readln(n,k); for i:=1 to k do for j:=1 to n do read(A[i,j]); if k=2 then begin B2(A[1],A[2],b); for i:=1 to n-1 do write(b[i],' '); writeln(b[n]) end else if n=3 then writeln('1 2 2 1 2') else begin for i:=1 to n-1 do write(i,' '); writeln(n) end end.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | program Ciagi;// runda 5 [A] 16.05.2014 const nmax=100000; type Ti=longint; Tii=extended; TCia = array[1..nmax] of Ti; TabCia = array[1..5] of TCia; var n,k,i,j:Ti; A:TabCia; b:TCia; procedure B2(a1,a2:Tcia; var b:Tcia); var i,sr,del1,del2,lk,lko:Ti; sum1,sum2:Tii; bo:array[1..nmax] of boolean; begin sum1:=0; sum2:=0;//dot. ciągów a1,a2 for i:=1 to n do begin sr:=(a1[i]+a2[i])div 2; b[i]:=sr; bo[i]:=a1[i]+a2[i]<>2*sr; del1:=abs(a1[i]-sr); del2:=abs(a2[i]-sr); sum1+=del1; sum2+=del2 //odległości end; lko:=round(abs(sum1-sum2))div 2; lk:=0;//licznik korekt if lko>0 then begin for i:=1 to n do if bo[i] then begin lk+=1; if 2*b[i]<a1[i]+a2[i] then b[i]+=1 else b[i]-=1; if lk=lko then break; end//i end;//korekt end;//B2 begin readln(n,k); for i:=1 to k do for j:=1 to n do read(A[i,j]); if k=2 then begin B2(A[1],A[2],b); for i:=1 to n-1 do write(b[i],' '); writeln(b[n]) end else if n=3 then writeln('1 2 2 1 2') else begin for i:=1 to n-1 do write(i,' '); writeln(n) end end. |