Prefijo y una secuencia de cambios en el diferencial ----------

Dada una longitud nn número de filas a1, a2, ..., ana1, a2, ..., an, cada uno puede seleccionar un intervalo [l, r], el número de la subíndice en esta sección se incrementa o decrementa en una .
¿Cuántas operaciones que encontrar al menos un recuento de todas las columnas son los mismos, y obtuvo bajo la premisa de garantizar que el número mínimo, el número resultante de columnas puede ser cuántos.
El formato de entrada
primera línea de entrada nn número entero positivo.
líneas nn Siguiente cada entran en un entero, el + 1 fila i representan un número entero aiai.
Formato de salida
de la primera línea de salida número mínimo de operaciones.
¿Cuántas segunda línea de salida el resultado final puede ser obtenida.
Rango de datos
0 <n≤1050 <n≤105,

0≤ai <21474836480≤ai <2147483648
de entrada de la muestra:
. 4
1.
1.
2
2

Muestra de la salida:
. 1
2

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
typedef long long LL ;
int n;
int a[N], b[N];
int main(){
 scanf("%d",&n);
 for (int i = 1; i <= n; i ++)    scanf("%d", &a[i]);
 for (int i = 1; i <= n; i ++)    b[i] = a[i] - a[i - 1];
 LL p = 0, q = 0;
 for (int i = 2; i <= n; i ++)
  if (b[i] >= 0)    p += b[i];
  else              q -= b[i];
  cout << max(p, q) << endl;
  cout << abs(p - q) + 1 << endl;
    return 0;
} 
Publicados 106 artículos originales · ganado elogios 67 · vistas 5444

Supongo que te gusta

Origin blog.csdn.net/qq_45772483/article/details/104687418
Recomendado
Clasificación