Tags » Histogram

How to digitise a drawing

While it is true that some of us are more practised at drawing than others, anyone can draw and you don’t need to create Rembrandtian masterpieces to communicate a point. 344 more words

Cat

Day 4: More Function Transformations, Percentiles, and a Golf Match

I know this is many days late, but this post refers to last Thursday (eep).  I’m going to do my best to get caught up this week.  332 more words

Statistics

Day 3: Histograms, Trigonometric Functions, and Function Transformations

Three days into the school year, my students and I are still getting used to each other.  Some classes have figured out that I prefer dialogue between teacher, student and other students.  328 more words

Statistics

How Fake is Our Education System?

–Arjoonn Sharma

Exactly how good is our education system? Touted to be a very good one and supported by a few shining gems, what exactly does the data say about the education system? 1,086 more words

Featured Report/Science Facts

SPOJ : HISTOGRA - Largest Rectangle in a Histogram

Problem Link : http://www.spoj.com/problems/HISTOGRA/


/*
         +-+ +-+ +-+
         |R| |.| |S|
         +-+ +-+ +-+
 */

#include <bits/stdc++.h>

#define pii             pair <int,int>
#define sc              scanf
#define pf              printf
#define Pi              2*acos(0.0)
#define ms(a,b)         memset(a, b, sizeof(a))
#define pb(a)           push_back(a)
#define MP              make_pair
#define db              double
#define ll              long long
#define EPS             10E-10
#define ff              first
#define ss              second
#define sqr(x)          (x)*(x)
#define D(x)            cout<<#x " = "<<(x)<<endl
#define VI              vector <int>
#define DBG             pf("Hi\n")
#define MOD             100007
#define MAX             100005
#define CIN             ios_base::sync_with_stdio(0); cin.tie(0)
#define SZ(a)           (int)a.size()
#define sf(a)           scanf("%d",&a)
#define sfl(a)          scanf("%lld",&a)
#define sff(a,b)        scanf("%d %d",&a,&b)
#define sffl(a,b)       scanf("%lld %lld",&a,&b)
#define sfff(a,b,c)     scanf("%d %d %d",&a,&b,&c)
#define sfffl(a,b,c)    scanf("%lld %lld %lld",&a,&b,&c)
#define loop(i,n)       for(int i=0;i<n;i++)
#define REP(i,a,b)      for(int i=a;i<b;i++)
#define TEST_CASE(t)    for(int z=1;z<=t;z++)
#define PRINT_CASE      printf("Case %d: ",z)
#define all(a)          a.begin(),a.end()
#define intlim          2147483648
#define inf             1000000
#define ull             unsigned long long

using namespace std;


/*----------------------Graph Moves----------------*/
//const int fx[]={+1,-1,+0,+0};
//const int fy[]={+0,+0,+1,-1};
//const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1};   // Kings Move
//const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move
//const int fx[]={-2, -2, -1, -1,  1,  1,  2,  2};  // Knights Move
//const int fy[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move
/*------------------------------------------------*/

/*-----------------------Bitmask------------------*/
//int Set(int N,int pos){return N=N | (1<<pos);}
//int reset(int N,int pos){return N= N & ~(1<<pos);}
//bool check(int N,int pos){return (bool)(N & (1<<pos));}
/*------------------------------------------------*/

ll ara;

ll hisogram(int n)
{
    stack<int>st;
    int i=0;
    ll ans=0;
    while(i<n)
    {
        if(st.empty() || ara<=ara[i])
        {
            st.push(i);
            i++;
        }
        else
        {
            int top=st.top();
            st.pop();
            ll area= ara*(st.empty()?i:i-st.top()-1);
            if(area>ans)
                ans=area;
        }
    }

    while(!st.empty())
    {
        int top=st.top();
        st.pop();
        ll area= ara*(st.empty()?i:i-st.top()-1);
        ans=max(ans,area);
    }
    return ans;
}

int main()
{
    ///freopen("in.txt","r",stdin);
    ///freopen("out.txt","w",stdout);
    int n;
    while(sf(n) && n)
    {
        loop(i,n) sfl(ara[i]);
        cout<<hisogram(n)<<endl;
    }
    return 0;
}

Histogram