█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 6325

Problema 0xf2 - Partir un arreglo grande en 2

  • Autor: carrillodev
  • Fecha: 2022-06-06 17:41:11 UTC (Hace más de 2 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.001 s 0 KBi
#2
Correcto
0.004 s 31 KBi
#3
Correcto
0.001 s 0 KBi
#4
Correcto
0.006 s 50 KBi
#5
Correcto
0.005 s 14 KBi
#6
Correcto
0.002 s 0 KBi
#7
Correcto
0.006 s 1 KBi
#8
Correcto
0.001 s 0 KBi
#9
Correcto
0.004 s 18 KBi
#10
Correcto
0.002 s 0 KBi
#11
Correcto
0.004 s 1 KBi
#12
Correcto
0.005 s 1 KBi
#13
Correcto
0.003 s 0 KBi
#14
Correcto
0.112 s 3 KBi
#15
Correcto
0.093 s 3 KBi
#16
Correcto
0.041 s 2 KBi
#17
Correcto
0.046 s 2 KBi
#18
Correcto
0.041 s 2 KBi
#19
Correcto
0.109 s 3 KBi
#20
Correcto
0.127 s 3 KBi
Puntos totales: 100 / 100

Código

#include <bits/stdc++.h>
using namespace std;

int main() {
  int n; cin>>n;
  int arr[n];
  for(int i = 0; i < n; i++) {
    cin>>arr[i];
  }
  
  int leftSum = arr[0], rightSum = 0, k = 1;
  for(int j = 1; j < n; j++) {
    rightSum += arr[j];
  }
  bool rightOk = rightSum < 0, leftOk = leftSum > 0;
  while(k < n && (!rightOk || !leftOk)) {
    k++;
    leftSum += arr[k-1];
    rightSum -= arr[k-1];
    leftOk = leftSum > 0;
    rightOk = rightSum < 0;
  }

  if(rightOk && leftOk) {
    cout<<k<<endl;
  } else {
    cout<<"Impossible"<<endl;
  }
  return 0;
}