Pagini recente » Cod sursa (job #2213144) | Rating Iacob Robert (robert.iacob) | Cod sursa (job #2184768) | Cod sursa (job #1180813) | Cod sursa (job #1737140)
//95 pe .campion
#include <bits/stdc++.h>
#define maxN 16006
#define INF 0x3f3f3f3f
using namespace std;
string text[3];
int n,i,j,s[3],dist[maxN],best[maxN],sol;
bool viz[maxN];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >heap;
int main()
{
ifstream f("base3.in");
ofstream g("base3.out");
for(i=0;i<3;i++)
f>>text[i],s[i]=text[i].size();
for(i=1;i<maxN;i++)
dist[i]=INF;
heap.push(make_pair(0,0));
while(!heap.empty())
{
int nod=heap.top().second;
heap.pop();
if(viz[nod])
continue;
viz[nod]=true;
for(i=0;i<3;i++)
{
int cost=dist[nod]+s[i];
int newn=abs(nod-s[i]);
if(dist[newn]>cost)
dist[newn]=cost,
heap.push(make_pair(cost,newn));
}
}
sol=INF;
for(i=0;i<3;i++)
for(j=0;j<s[i];j++)
if(text[i][j]=='1')
{
int val=abs((s[i]-2*j-1));
if(sol>dist[val]+s[i])
sol=dist[val]+s[i];
}
if(sol==INF)
g<<'0';
else g<<sol;
return 0;
}