Pagini recente » Cod sursa (job #3354753) | Cod sursa (job #730838) | Cod sursa (job #1824702) | Cod sursa (job #1226064) | Cod sursa (job #2291185)
#include <bits/stdc++.h>
using namespace std;
const int N=120000+5;
int n;
map<string,int>id;
map<int,string>reco;
int CUR=0;
inline void add(string s)
{
if(id[s]==0)
{
CUR++;
id[s]=CUR;
reco[CUR]=s;
}
}
vector<int>what[N];
int egal[N];
inline void read_rec(int p)
{
string s;
cin>>s;
while(cin>>s)
{
add(s);
what[p].push_back(id[s]);
cin>>s;
if(s==")")
{
cin>>s;
break;
}
}
cin>>s;
add(s);
egal[p]=id[s];
}
int st[N];
int p;
inline int expresie();
inline int termen();
inline int termen()
{
int val;
if(st[p]==0)
{
int in=p;
p++;
val=expresie();
p++;
/// cout<<"\t\t\t\t\t\t\t\t\t\t\t\tLOL "<<in<<" , "<<val<<"\n";
/// exit(0);
return val;
}
else
{
val=st[p];
p++;
/// cout<<"\t\t\t\t\t\t\t\t\t\t\t\tLOL "<<p-1<<" , "<<val<<"\n";
return val;
}
}
int vf;
inline int expresie()
{
int init=p;
/// cout<<p<<"\n";
vector<int>lol;
lol.push_back(termen());
if(init==1)
{
///cout<<"LOL"<<lol.back()<<"\n";
}
/// cout<<init<<" "<<p<<"\n";
///if(init==1)
///{
/// cout<<init<<"\t{"<<p<<" "<<vf<<"}\n";
///}
while(st[p]==-2)
{
p++;
int val=termen();
lol.push_back(val);
}
sort(lol.begin(),lol.end());
cout<<init<<"\t\t\t < = > ";
for(auto &it:lol)
{
cout<<it<<" ";
}
if(lol.size()==1)
{
cout<<" = "<<" , "<<lol[0]<<"\n";
return lol[0];
}
for(int i=1;i<=n;i++)
{
if(lol==what[i])
{
cout<<" = "<<" , "<<egal[i]<<"\n";
return egal[i];
}
}
/// cout<<"\n"<<init<<"\tERROR\n";
}
inline void slove_rec()
{
/// cout<<"\n\n\n\n\n\n\n\n\n\n\n";
/// cout<<"\n\n\n\n\n\n\n\n\n\n\n";
cout<<"\n\n\n\n\n\n\n\n\n\n\nTC\n";
vf=0;
int top=0;
while(1)
{
string s;
cin>>s;
if(s=="+")
{
st[++vf]=-2;
}
if(s=="(")
{
top++;
st[++vf]=0;
}
if(s==")")
{
top--;
if(top==0)
{
break;
}
st[++vf]=-1;
}
if(s!="(" && s!=")" && s!="+")
{
st[++vf]=id[s];
}
}
p=1;
for(int i=1;i<=vf;i++)
{
if(st[i]==0)
{
cout<<"( ";
}
if(st[i]==-1)
{
cout<<") ";
}
if(st[i]==-2)
{
cout<<"+ ";
}
if(st[i]>0)
{
cout<<st[i]<<" ";
}
}
cout<<"\n";
int val=expresie();
cout<<val<<" "<<reco[val]<<"\n";
}
/// 0 = (
/// -1 = )
/// -2 = +
int main()
{
freopen("input","r",stdin);
freopen("output","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
read_rec(i);
sort(what[i].begin(),what[i].end());
}
int q;
cin>>q;
while(q--)
{
slove_rec();
}
///return 0;
cout<<"\n\n\n\n\n\n";
cout<<"After Program\n\n\n";
for(int i=1;i<=n;i++)
{
cout<<egal[i]<<"\t";
for(auto &it:what[i])
{
cout<<it<<" ";
}
cout<<"\n";
}
cout<<"After Program\n\n\n";
for(int i=1;i<=n;i++)
{
cout<<reco[egal[i]]<<"\t";
for(auto &it:what[i])
{
cout<<reco[it]<<" ";
}
cout<<"\n";
}
return 0;
}
/**
**/