Split into 3 Equal Sum Parts

Split into 3 Equal Sum Parts

Hard PHP PHP Arrays 30 views
Explanation Complexity

Problem Statement

Check if the array can be split into three contiguous parts with equal sum. Print YES or NO.

Input Format

First n. Next line n integers.

Output Format

YES or NO.

Example

6
1 2 3 0 3 0
YES

Constraints

n

Input / Output Format

Input Format
First n. Next line n integers.
Output Format
YES or NO.
Constraints
n

Examples

Input:
6 1 2 3 0 3 0
Output:
YES

Example Solution (Public)

PHP
<?php
$inputText=trim(stream_get_contents(STDIN));
if($inputText==='') exit;
$tokens=preg_split('/\\s+/', $inputText);
$i=0; $n=intval($tokens[$i++] ?? 0);
$a=[]; $sum=0;
for($k=0;$k<$n;$k++){ $v=intval($tokens[$i++] ?? 0); $a[]=$v; $sum+=$v; }
if($sum%3!==0){ echo 'NO'; exit; }
$target=intdiv($sum,3);
$cnt=0; $run=0;
for($k=0;$k<$n;$k++){
  $run += $a[$k];
  if($run===$target){
    $cnt++; $run=0;
    if($cnt===2 && $k<$n-1){ echo 'YES'; exit; }
  }
}
echo 'NO';
?>

Official Solution Code

<?php
$inputText=trim(stream_get_contents(STDIN));
if($inputText==='') exit;
$tokens=preg_split('/\\s+/', $inputText);
$i=0; $n=intval($tokens[$i++] ?? 0);
$a=[]; $sum=0;
for($k=0;$k<$n;$k++){ $v=intval($tokens[$i++] ?? 0); $a[]=$v; $sum+=$v; }
if($sum%3!==0){ echo 'NO'; exit; }
$target=intdiv($sum,3);
$cnt=0; $run=0;
for($k=0;$k<$n;$k++){
  $run += $a[$k];
  if($run===$target){
    $cnt++; $run=0;
    if($cnt===2 && $k<$n-1){ echo 'YES'; exit; }
  }
}
echo 'NO';
?>
Please login to submit solutions.
Editor
Output

                                        
Please login to submit solutions.