fork download
  1. Program walrus;
  2. var
  3. N, S, T, W, test,i, singolo, blocco, totdormienti, maxtempo: LongInt;
  4. C : AnsiString;
  5. branco, tempobranco:array[1..300000] of longint;
  6.  
  7. Procedure calcolatempo(B:longint; var tempo:longint) ;
  8. begin
  9. if B=1 then tempo:=1
  10. else if B=2 then tempo:=2
  11. else
  12. begin
  13. if B mod 2<>0 then tempo := (B-3) div 2 +2
  14. else tempo:= (B-3) div 2 +3;
  15. end;
  16. end;
  17.  
  18.  
  19. begin
  20. (*assign(input, 'input.txt'); reset(input);
  21.   assign(output, 'output.txt'); rewrite(output);*)
  22. ReadLn(T);
  23. for test:=1 to T do begin
  24. ReadLn(N);
  25. ReadLn(C);
  26. W := 0;
  27. S := 0;
  28. singolo:=0;
  29. blocco:=0;
  30. totdormienti:=0;
  31. i:=1;
  32. while i<N do
  33. begin
  34. if C[i]='-' then begin if ((i=N-1) and (C[i+1]='.')) then begin blocco:=blocco+1; totdormienti:=totdormienti+1; branco[blocco]:=totdormienti; i:=i+1; totdormienti:=0;end
  35. else i:=i+1;
  36. end
  37. else
  38. if (C[i]='.') and (C[i+1]='.') then begin if i=N-1 then begin blocco:=blocco+1; totdormienti:=totdormienti+2; branco[blocco]:=totdormienti; i:=i+1; end
  39. else begin i:=i+1; totdormienti:=totdormienti+1; end
  40. end
  41. else
  42. if (C[i]='.') and (C[i-1]='-') and (C[i+1]='-') then begin singolo:=singolo+1; blocco:=blocco+1;totdormienti:=totdormienti+1; branco[blocco]:=totdormienti; i:=i+1; totdormienti:=0;end
  43. else
  44. if (C[i]='.') and (C[i+1]='-') then begin blocco:=blocco+1;totdormienti:=totdormienti+1;branco[blocco]:=totdormienti; i:=i+1; totdormienti:=0; end;
  45.  
  46. end;
  47. maxtempo:=0;
  48. for i:=1 to blocco do begin calcolatempo(branco[i],tempobranco[i]); if tempobranco[i]>maxtempo then maxtempo:= tempobranco[i]; end;
  49. W:=blocco;
  50. if blocco=1 then S:=tempobranco[1]
  51. else if maxtempo>blocco then S:=maxtempo
  52. else begin if singolo=0 then S:=blocco+1
  53. else S:=blocco;
  54. end;
  55. WriteLn(W, ' ', S);
  56. end;
  57. end.
Success #stdin #stdout 0s 5284KB
stdin
1
5
...-.
stdout
2 3