Monday, 7 September 2015

Wacmian Numbers (UVALive 2731, Regionals 2003 >> South Pacific)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

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

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100010


int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n, m, x, y, a, b, c;
    string s;

    while(cin>>s)
    {
        if(s=="#") return 0;
        n=0;
        int sl=s.size();
        for(int i=0;i<sl;i++)
        {
            int p6 = pow(6, sl-i-1), digit;
            //%)~@?\$
            if(s[i]=='%') digit=0;
            else if(s[i]==')') digit=1;
            else if(s[i]=='~') digit=2;
            else if(s[i]=='@') digit=3;
            else if(s[i]=='?') digit=4;
            else if(s[i]=='\\') digit=5;
            else if(s[i]=='$') digit=-1;
            n+=digit*p6;
        }
        cout<< n <<"\n";
    }
return 0;
}

Repeating Characters (UVALive 5800, HDU 4236, Regionals 2011 >> North America - Greater NY)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

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

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100010


int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n, m, x, y, a, b, c, r;
    string s;
    cin>>tc;
    while(tc--)
    {
        cin>>n>>r>>s;
        cout<<n<<" ";
        for(int i=0;i<s.size();i++)
            for(int j=0;j<r;j++)
                cout<<s[i];
        cout<<"\n";
    }
return 0;
}

Penney Game (UVALive 4873, CSU 1130, SPOJ NY10A, Regionals 2010 >> North America - Greater NY)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

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

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100010


int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n, m, x, y, a, b, c;
    string s;
    cin>>tc;
    while(tc--)
    {
        cin>>n;
        map<string, int>mp;
        cin>>s;
        for(int i=2;i<40;i++)
        {
            string tmp="";
            tmp+=s[i-2];
            tmp+=s[i-1];
            tmp+=s[i];
            mp[tmp]++;
        }
        cout<<n<<" ";
        cout<<mp["TTT"]<<" "<<mp["TTH"]<<" "<<mp["THT"]<<" "<<mp["THH"]<<" "<<mp["HTT"]<<" "<<mp["HTH"]<<" "<<mp["HHT"]<<" "<<mp["HHH"]<<"\n";
    }
return 0;
}

No Brainer (UVALive 3077, ZOJ 2201, POJ 2027, Regionals 2004 >> North America - South Central USA)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

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

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100010


int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n, m, x, y, a, b, c;
    string s;
    cin>>tc;
    while(tc--)
    {
        cin>>x>>y;
        if(y>x) cout<<"NO BRAINS\n";
        else cout<<"MMM BRAINS\n";
    }
return 0;
}

Sunday, 6 September 2015

Largest Rectangle in a Histogram (SPOJ HISTOGRA, POJ 2559, HDU 1506, ZOJ 1985)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

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

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100005

long long hist[MX];
int lft[MX], rgt[MX];
void Histogram(int n)
{
    stack<long long>stk;
    stk.push(0);
    hist[0]=-1;

    for(int i=1;i<=n;i++)
    {
        while(hist[stk.top()]>=hist[i])
            stk.pop();
        lft[i]=  stk.top()+1;
        stk.push(i);
    }

    while(!stk.empty())
        stk.pop();

    stk.push(n+1);
    hist[n+1]=-1;
    for(int i=n;i>0;i--)
    {
        while(hist[stk.top()]>=hist[i])
            stk.pop();
        rgt[i]=  stk.top()-1;
        stk.push(i);
    }
return;
}


int main()
{
    //ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n, m, x, y, a, b, c;
    string s;
    //cin>>tc;
    while(cin>>n && n)
    {
        for(int i=1;i<=n;i++)
            cin>>hist[i];
        Histogram(n);
        long long mx=0;
        for(int i=1;i<=n;i++)
            mx=max(mx, hist[i]*(long long)(rgt[i]-lft[i]+1));
            //cout<<hist[i]<<" "<<lft[i]<<" "<<rgt[i]<<endl;
        cout<< mx <<"\n";
    }
return 0;
}