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

Envío 5885

Problema 0x4f - Rectángulo de máxima área dentro de un histograma pequeño

  • Autor: cams2692
  • Fecha: 2022-03-22 20:36:51 UTC (Hace más de 2 años)
Caso # Resultado Tiempo Memoria
#1
Incorrecto
0.004 s 11 KBi
#2
Incorrecto
0.002 s 4 KBi
#3
Incorrecto
0.005 s 6 KBi
#4
Incorrecto
0.004 s 10 KBi
#5
Incorrecto
0.001 s 5 KBi
#6
Incorrecto
0.004 s 27 KBi
#7
Incorrecto
0.004 s 4 KBi
#8
Incorrecto
0.004 s 32 KBi
#9
Incorrecto
0.004 s 4 KBi
#10
Incorrecto
0.002 s 4 KBi
#11
Incorrecto
0.002 s 4 KBi
#12
Incorrecto
0.006 s 54 KBi
#13
Incorrecto
0.002 s 4 KBi
#14
Incorrecto
0.004 s 53 KBi
#15
Correcto
0.002 s 4 KBi
#16
Incorrecto
0.007 s 24 KBi
#17
Incorrecto
0.002 s 4 KBi
#18
Incorrecto
0.008 s 32 KBi
#19
Incorrecto
0.002 s 4 KBi
Puntos totales: 6 / 100

Código

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

type Value struct {
	IsActive bool
	Sum      int64
}

func main() {
	reader := bufio.NewReader(os.Stdin)

	reader.ReadString('\n')

	numbers, _ := reader.ReadString('\n')
	numbers = strings.ReplaceAll(numbers, "\n", "")

	numbersSeparate := strings.Split(numbers, " ")

	heights := make(map[int64]Value)

	var maxValue int64 = 0

	for _, value := range numbersSeparate {
		valueInt, _ := strconv.ParseInt(value, 10, 64)

		if _, ok := heights[valueInt]; !ok {
			heights[valueInt] = Value{
				IsActive: true,
				Sum:      valueInt,
			}
			if maxValue < valueInt {
				maxValue = valueInt
			}
		}
		for key, val := range heights {
			if heights[key].IsActive {
				if key > valueInt {
					val.IsActive = false
				} else {
					val.Sum += key
				}
				heights[key] = val
			}
			if val.Sum > maxValue {
				maxValue = val.Sum
			}
		}

	}

	fmt.Println(maxValue)
}