UVa 11736 - Debugging RAM

#include<bits/stdc++.h>

using namespace std;

typedef map<string, int>mpsi;
typedef unsigned long long ull;

struct my
{
    string x;
    int byte;
    ull result;
};

my ar[330];

ull power(int dui, int p)
{
    ull r = 1;

    for(int i=1; i<=p; i++)
    {
        r*=dui;
    }

    return r;
}

ull decimal(string s)
{
//    ull ret = 0;
//    int len = s.length () - 1;
//
//    for ( int i = len; i >= 0; i-- )
//        ret += (power (2, i) * (s [len - i] - '0'));
//
//    return ret;

      ull ret =0, k;
      int len = s.length();
      int p = len - 1;

      for(int i=0; i<len and p>=0; i++)
      {
          k = (s[i] - '0') * power(2, p);

          ret+=k;
          p--;
      }

      return ret;
}

int main()
{
    ios_base::sync_with_stdio(false);
    int b, v;
    mpsi mp;
    while(cin >> b >> v)
    {
        mp.clear();

        string s;
        int i , y, line=0, arlen=1;

        for(i=0; i<v; i++)
        {
            cin >> s >> y;
            //cout << s << " " << y << "\n" ;
            line+=y;
            mp[s] = arlen;
            ar[arlen].x = s;
            ar[arlen].byte = y;
            arlen++;
        }

        int indx=1 , cnt=0;
        string ans="";

        for(i=0 , cnt=1; i<line; i++, cnt++)
        {
            cin >> s;
            //cout << cnt << " ; ";

            ans+=s;

            if(cnt == ar[indx].byte)
            {
                cnt=0;
                ar[indx].result = decimal(ans);
                indx++;
                ans="";
            }
        }

        int q;
        //cout << "query: ";
        cin >> q;
        while(q--)
        {
            cin >> s;
            //cout <<mp[s] << "\n";
            if(mp[s])
            {
                //int in = mp[s];
                //cout << in << "\n";
                cout << s << "=" << ar[mp[s]].result << "\n";
            }

            else
            {
                cout << s << "=" << "\n";
            }
        }
    }

    return 0;
}

/*

4 4
ab  2
Cd  2
ef  3
gh  1
0101
1111
1111
0101
1010
1010
1010
1000


*/

Comments

Popular posts from this blog

SPOJ-CMG - Collecting Mango

LightOJ 1009 - Back to Underworld

LeetCode Palindrome Number