Pagini recente » Cod sursa (job #2856264) | Cod sursa (job #686318) | Cod sursa (job #169500) | Cod sursa (job #2987894) | Cod sursa (job #2474063)
#include <bits/stdc++.h>
using namespace std;
ofstream g("abc2.out");
FILE *pFile=freopen("abc2.in","r",stdin);
const int dim=90000,mod=666013,mod1=9017;
long long p3[25],sol;
int n;
char v[10000001],s[22];
char x;
vector<int>M[mod];
void inser(int x)
{
int poz=x%mod;
M[poz].push_back(x);
}
int query(int x)
{
int poz=x%mod,u=0;
for(int i=0;i<M[poz].size();i++)
if(M[poz][i]==x) {u++;M[poz].erase(M[poz].begin()+i);}
return u;
}
int main()
{
p3[0]=1;
for(int i=1;i<=22;i++)
p3[i]=p3[i-1]*3;
int i=0;
while(x!='\n')
{
x=fgetc(pFile);
if(isalpha(x))
{
if(x=='a') v[i]='0';
else if(x=='b') v[i]='1';
else if(x=='c') v[i]='2';
i++;
}
}
int nr=0,j=0;
while(x!=EOF)
{
x=fgetc(pFile);
if(x=='\n')
{n=j;inser(nr);nr=0;j=0;}
else
nr+=(x-'a')*p3[j++];
}
nr=0;
for(int j=0;j<n;j++)
nr+=(v[j]-'0')*p3[j];
for(int j=1;j<i;j++)
{
sol+=query(nr);
//g<<query(nr)<<"\n";
//g<<nr<<"\n";
nr=nr/3;
nr+=(v[j]-'0')*p3[n-1];
}
g<<sol;
return 0;
}