TOPIC
Wrong Answer 60%
Destron asked 3 years ago
Não estou entendendo onde está o erro no código, tentei vários casos de teste e todos que tentei deram a resposta certa:
#include<bits/stdc++.h>
using namespace std;
struct retangulo{
unsigned long long int alt, larg;
}typedef R;
main(){
unsigned long long int n;
while(scanf("%llu", &n), n!=0){
R vet[n];
stack<R> pilha;
for(unsigned long long int i=0;i<n;i++){
scanf("%llu", &vet[i].alt);
vet[i].larg=1;
}
unsigned long long int maior=0, area, aux;
for(unsigned long long int i=0;i<n;i++){
if(pilha.empty()) pilha.push(vet[i]);
else{
if(vet[i].alt<pilha.top().alt){
while(1){
if(pilha.empty()){
vet[i].larg+=aux;
pilha.push(vet[i]);
break;
}
else{
if(pilha.top().alt>vet[i].alt){
area=pilha.top().alt*pilha.top().larg;
maior=max(area, maior);
aux=pilha.top().larg;
pilha.pop();
if(!pilha.empty()) pilha.top().larg+=aux;
}
if(!pilha.empty() && pilha.top().alt==vet[i].alt){
pilha.top().larg+=vet[i].larg;
break;
}
if(!pilha.empty() && pilha.top().alt<vet[i].alt){
pilha.push(vet[i]);
break;
}
}
}
}else
if(!pilha.empty() && vet[i].alt>pilha.top().alt){
pilha.push(vet[i]);
}else
if(!pilha.empty() && vet[i].alt==pilha.top().alt){
pilha.top().larg++;
}
}
}
while(!pilha.empty()){
area=pilha.top().alt*pilha.top().larg;
aux=pilha.top().larg;
maior=max(area, maior);
pilha.pop();
if(!pilha.empty()) pilha.top().larg+=aux;
}
printf("%llu\n", maior);
}
}
This topic has not been answered yet. Be the first!