|  | 
|  | 
| back to board | I got AC!!!(0.04 and 225K) varc:char;
 a:array[1..100000] of integer;
 cyc1,cyc2,n,k,m,s,sm,i:longint;
 begin
 readln(n,m);
 cyc1:=0;
 while (not eof(input))and(cyc1<=n) do
 begin
 while (not eoln(input))and(cyc1<=n) do
 begin
 read(c);
 inc(cyc1);
 if c='*' then a[cyc1]:=-1 else a[cyc1]:=ord(c)-ord('0');
 end;
 readln;
 end;
 k:=0;
 s:=0;
 i:=0;
 sm:=100000;
 for cyc1:= 1 to n do
 begin
 if a[cyc1]=-1 then
 begin
 s:=0;k:=0;
 end
 else
 begin
 if k<m then
 begin
 inc(k);
 s:=s+a[cyc1];
 if k=m then
 begin
 if sm>s then
 begin sm:=s; i:=cyc1-m+1;end;
 end;
 end
 else
 begin
 s:=s+a[cyc1]-a[cyc1-m];
 if sm>s then begin sm:=s;i:=cyc1-m+1;end;
 
 end;
 end;
 end;
 writeln(i);
 end.
Re: I got AC!!!(0.04 and 225K) Posted by Dilyan  16 Jun 2005 18:37try using an array only for the last K elementsRe: I got AC!!!(0.04 and 225K) Posted by Lurker  31 Jul 2006 19:210.031 242 KBProgram Buffer_Manager;
 Var
 A:array[0..10000] of integer;
 bj:boolean;
 N,K,c,s,i,mi,t,b:Longint;
 min:longint;
 ch:char;
 Begin
 Readln(n,k);
 min:=1000000;
 while (b<n)and(not(eof(input))) do begin
 while (b<n)and (not(eoln(input))) do begin
 Read(ch);inc(b);inc(i);
 if i>k then i:=1;
 t:=a[i];
 if ch='*' then A[i]:=-1 Else A[i]:=ord(ch)-48;
 if a[i]=-1 then begin
 c:=0;s:=0;
 End Else if c=k then begin
 S:=s-t+a[i];
 if s<min then begin
 min:=s;mi:=b-k+1;
 End;
 End Else begin
 inc(c);s:=s+a[i];
 if c=k then if s<min then begin min:=s;mi:=b-k+1;End;
 End;
 End;
 Readln;
 End;
 writeln(mi);
 End.
Re: I got AC!!!(0.04 and 225K) Just one feeling,
 Always found that most guys are very smart, but the code they write/post are quite terrible(I mean hard to read). I would recommend writing readable code with clear structure and comments as that's the rule in real world( long code with clean structure and readability is much better than urgly code with small size).
Re: I got AC!!!(0.04 and 225K)  Edited by author 05.08.2008 13:41
 
 Edited by author 05.08.2008 13:41
 | 
 | 
|