fork download
  1. <?
  2. function retMax($p1, $p2)
  3. {
  4. if($p1>=p2)return $(int)p1;
  5. else return $(int)p2;
  6. }
  7. function retMin($p1, $p2)
  8. {
  9. if($p1<=$p2)return $(int)p1;
  10. else return $(int)p2;
  11. }
  12.  
  13. function getNumFStr($string,$count)
  14. {
  15. $string.='|';
  16. $q=0;
  17. $i=0;
  18. while(1)
  19. {
  20. if($string[$i]=='|') break;
  21. if($string[$i]==' ') {$q++; $i++;}
  22. else
  23. {
  24. if($q==$count) $tab.=$string[$i];
  25. $i++;
  26. }
  27. }
  28. return $tab;
  29. }
  30.  
  31. function main()
  32. {
  33. $hm=0;
  34. $hmt=0;
  35. $stdin = fopen('php://stdin', 'r');
  36.  
  37. fscanf($stdin, "%d", $hm);
  38.  
  39.  
  40. while($hm>0){
  41. $hm=$hm-1;
  42. fscanf($stdin, "%d", $hmt);
  43.  
  44. $t=true;
  45. while($hmt>0){
  46. $hmt=$hmt-1;
  47. $line=fgets($stdin);
  48. $type=getNumFStr($line,0);
  49. $x=0;
  50. $y=0;
  51. $r=0;
  52. $maxX=0;
  53. $maxY=0;
  54. $minX=0;
  55. $minY=0;
  56.  
  57. switch($type){
  58. case 'c':
  59. $x=getNumFStr($line,1);
  60. $y=getNumFStr($line,2);
  61. $r=getNumFStr($line,3);
  62. $x=$x-1;
  63. echo ("$x $y $r");
  64. if($t==true){ $minX=$x-$r; $minY=$y-$r; $maxX=$x+$r; $maxY=$y+$r; }
  65. else{
  66. $u=$x-$r;
  67. $minX=retMin($u, $minX);
  68. $u=$y-$r;
  69. $minY=retMin($u,$minY);
  70. $u=$x+$r;
  71. $maxX=retMax($u,$maxX);
  72. $u=$y+$r;
  73. $maxY=retMax($u,$maxY);}
  74. break;
  75. case 'p':
  76. $x=getNumFStr($line,1);
  77. $y=getNumFStr($line,2);
  78.  
  79. if($t==true){ $minX=$x; $minY=$y; $maxX=$x; $maxY=$y;}
  80. else{ $minX=retMin($x, $minX); $minY=retMin($y,$minY); $maxX=retMax($x,$maxX); $maxY=retMax($y,$maxY);}
  81. break;
  82. case 'l':
  83. $x=getNumFStr($line,1);
  84. $y=getNumFStr($line,2);
  85. $x2=getNumFStr($line,3);
  86. $y2=getNumFStr($line,4);
  87. if($t==true){ $minX=retMin($x,$x2); $minY=retMin($y,$y2); $maxX=retMax($x,$x2); $maxY=retMax($y,$y2); }
  88. else{ $minX=retMin(retMin($x,$x2), $minX); $minY=retMin(retMin($y,$y2),$minY); $maxX=retMax(retMax($x,$x2),$maxX); $maxY=retMax(retMax($y,$y2),$maxY);}
  89.  
  90. break;
  91. }
  92.  
  93. $t=false;
  94.  
  95. }
  96. echo $minX.' '.$minY.' '.$maxX.' '.$maxY."\n";
  97. $line=fgets($stdin);
  98.  
  99. }
  100. fclose($stdin);
  101.  
  102. }
  103. main();
  104. ?>
Success #stdin #stdout 0.03s 25832KB
stdin
3
1
p 3 3 

2
c 10 10 20
c 20 20 10

1
l 0 0 100 20
stdout
<?
function retMax($p1, $p2)
{
	if($p1>=p2)return $(int)p1;
	else	 return $(int)p2;
}
function retMin($p1, $p2)
{
	if($p1<=$p2)return $(int)p1;
	else	 return $(int)p2;
}

function getNumFStr($string,$count)
{
	$string.='|';
	$q=0;
	$i=0;
	while(1)
	{
		if($string[$i]=='|') break;
		if($string[$i]==' ') {$q++; $i++;}
		else 
		{
			if($q==$count) $tab.=$string[$i];
			$i++;
		}
	}
	return $tab;
}
	
function main()
{
	$hm=0;
	$hmt=0;
	$stdin = fopen('php://stdin', 'r');
 
	fscanf($stdin, "%d", $hm);
 
 
	while($hm>0){
		$hm=$hm-1;
		fscanf($stdin, "%d", $hmt);
 
		$t=true;
		while($hmt>0){
			$hmt=$hmt-1;
			$line=fgets($stdin);
			$type=getNumFStr($line,0);
			$x=0;
			$y=0;
			$r=0;
			$maxX=0;
			$maxY=0;
			$minX=0;
			$minY=0;
			
			switch($type){
				case 'c': 
					$x=getNumFStr($line,1);
					$y=getNumFStr($line,2);
					$r=getNumFStr($line,3);
					$x=$x-1;
					echo ("$x $y $r");
						if($t==true){	 $minX=$x-$r; $minY=$y-$r; $maxX=$x+$r; $maxY=$y+$r;	}
						else{	 	
						$u=$x-$r;
						$minX=retMin($u, $minX);	
						$u=$y-$r;
						$minY=retMin($u,$minY);
						$u=$x+$r;
						$maxX=retMax($u,$maxX);
						$u=$y+$r;
						$maxY=retMax($u,$maxY);}
				break;
				case 'p': 
					$x=getNumFStr($line,1);
					$y=getNumFStr($line,2);
 
						if($t==true){	 $minX=$x;	$minY=$y;	$maxX=$x;	$maxY=$y;}
						else{	 $minX=retMin($x, $minX);	$minY=retMin($y,$minY);	$maxX=retMax($x,$maxX);	$maxY=retMax($y,$maxY);}
				break;
				case 'l': 
					$x=getNumFStr($line,1);
					$y=getNumFStr($line,2);
					$x2=getNumFStr($line,3);
					$y2=getNumFStr($line,4);
						if($t==true){	 $minX=retMin($x,$x2);	$minY=retMin($y,$y2);	$maxX=retMax($x,$x2);	$maxY=retMax($y,$y2);	}
						else{	 $minX=retMin(retMin($x,$x2), $minX);	$minY=retMin(retMin($y,$y2),$minY);	$maxX=retMax(retMax($x,$x2),$maxX);	$maxY=retMax(retMax($y,$y2),$maxY);}
	
				break;
			}
			
			$t=false;
			
		}
		echo $minX.' '.$minY.' '.$maxX.' '.$maxY."\n";
		$line=fgets($stdin);
		
	}
	fclose($stdin);
 
}
main();
?>