Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- int main()
- {
- ll n,q,i,j,k;
- map<string,vector<ll> >mp;
- cin>>n>>q;
- k=0;
- string s;
- ll cd,d,base,l,u,C;
- vector<ll>c;
- while(n--)
- {
- cin.ignore();
- cin>>s;
- cin>>base>>cd>>d;
- c.clear();
- ll arr[d+5];
- // cout<<"base "<<base<<" cd "<<cd<<endl;
- ll low[d+5],up[d+5],total;
- memset(low,0,sizeof(low));
- memset(up,0,sizeof(up));
- memset(arr,0,sizeof(arr));
- for(i=1; i<=d; i++)
- {
- cin>>low[i]>>up[i];
- // cout<<low[i]<<up[i]<<endl;
- }
- arr[d]=cd;
- //cout<<"arr[d] "<<arr[d]<<endl;
- for(i=d-1; i>0; i--)
- {
- //cout<<i<<endl;
- l=low[i+1];
- u=up[i+1];
- C=arr[i+1];
- total=C*(u-l+1);
- arr[i]=total;
- // cout<<"arr[i] "<<arr[i]<<endl;
- }
- arr[0]=base;
- // cout<<"arr[0] "<<arr[0]<<endl;
- for(i=1; i<=d; i++)
- arr[0]-=(low[i]*arr[i]);
- for(i=0;i<=d;i++)
- c.push_back(arr[i]);
- mp[s]=c;
- s.clear();
- }
- while(q--)
- {
- string s;
- cin>>s;
- cout<<s<<"[";
- ll address=mp.find(s)->second[0],ind;
- ll sz=mp.find(s)->second.size();
- for(i=1; i<sz; i++)
- {
- cin>>ind;
- address+=((mp.find(s)->second[i])*ind);
- if(i!=1)
- {
- cout<<", ";
- }
- cout<<ind;
- }
- cout<<"] = "<<address<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement