//#include GRAPH
//#define DEBUG //comment when you have to disable all debug macros.
//#define LOCAL //uncomment for testing from local file
#define NDEBUG //comment when all assert statements have to be disabled.
#include <iostream>
#include <cstring>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <bitset>
#include <climits>
#include <ctime>
#include <algorithm>
#include <functional>
#include <stack>
#include <queue>
#include <list>
#include <deque>
#include <sys/time.h>
#include <iomanip>
#include <cstdarg>
#include <utility> //std::pair
#include <cassert>
#define fd(i,a) for(i=1;i<=a;i++)
#define fa(i,a,b) for(i=a;i<=b;i++)
#define fs(i,a,b,c) for(i=a;i<=b;i+=c)
#define tr(c,i) for(typeof(c.begin()) i = (c).begin(); i != (c).end(); i++)
#define present(c,x) ((c).find(x) != (c).end())
#define all(x) x.begin(), x.end()
#define pb push_back
#define log2(x) (log(x)/log(2))
#define ARRAY_SIZE(arr) (1[&arr]-arr)
#define lld long long int
#define MOD 1000000007
#define INF 1000000000
#define gcd __gcd
#define equals(a,b) (a.compareTo(b)==0) //for strings only
using namespace std;
#ifdef DEBUG
#define debug(args...) {dbg,args; cerr<<endl;}
#else
#define debug(args...) // Just strip off all debug tokens
#endif
#ifdef GRAPH
#include "drawGraph.cpp"
#endif
struct debugger
{
template < typename T> debugger& operator , ( const T& v)
{
cerr << v<< " " ;
return * this ;
}
} dbg;
template < class T>
inline void inputInt( T & n )
{
n= 0 ;
T ch= getchar_unlocked( ) ;
/*int sign=1;
while(( ch < '0' || ch > '9') && ch!='-')
ch=getchar_unlocked();
if(ch=='-')
{
sign=-1;
ch=getchar_unlocked();
}
while( ch >= '0' && ch <= '9' )
n = (n<<3)+(n<<1) + ch-'0', ch=getchar_unlocked();
n*=sign;*/
while ( ch < '0' || ch > '9' )
ch= getchar_unlocked( ) ;
while ( ch >= '0' && ch <= '9' )
n = ( n<< 3 ) + ( n<< 1 ) + ch- '0' , ch= getchar_unlocked( ) ;
}
// inline void inputString(string &s)
// {
// char ch=getchar_unlocked();
// while(ch<'a' || ch >'z')ch=getchar_unlocked();
// s="";
// while(ch>='a' && ch<='z')
// s+=ch, ch=getchar_unlocked();
// }
inline void inputString( string & s)
{
char ch= getchar_unlocked( ) ;
s= "" ;
while ( ch! = '\n ' )
s+ = ch, ch= getchar_unlocked( ) ;
}
typedef struct {
int operator( ) ( const pair< int ,int > & k) const {
return ( k.first * 100000 + k.second ) % MOD;
}
} myHash;
string s1,s2;
lld len1, len2,a,b,k;
typedef unordered_map< pair< lld,lld> , lld, myHash> MyMap;
MyMap mp, cost_map;
lld arrX[ 20100001 ] ;
lld arrY[ 20100001 ] ;
inline lld actualK( ) {
return k/ a+ 1 ;
}
inline void mapInsert( MyMap & m, pair< lld,lld> p, lld value) {
m.insert ( make_pair( p,value) ) ;
}
inline lld numbering( ) {
lld ma,mi,i,j,index= 1 , t= actualK( ) ;
for ( i= 1 ; i<= len1; i++ ) {
ma = max( ( lld) 1 ,i- t) ;
mi = min( i+ t,len2) ;
for ( j= ma; j<= mi; j++ ) {
arrX[ index] = i;
arrY[ index] = j;
mapInsert( mp,make_pair( i,j) ,index) ;
index++ ;
}
}
return index;
}
inline void init( ) {
mp.clear ( ) ;
cost_map.clear ( ) ;
lld i, t = actualK( ) ;
for ( i= 0 ; i<= t; i++ ) mapInsert( cost_map, make_pair( i,0 ) , i* a) ;
for ( i= 0 ; i<= t; i++ ) mapInsert( cost_map, make_pair( 0 ,i) , i* a) ;
}
inline lld cost( lld x, lld y) {
pair< lld, lld> p = make_pair( x,y) ;
lld val;
if ( cost_map.find ( p) ! = cost_map.end ( ) ) val = cost_map[ p] ; //present
else if ( a) val = ( lld) INF;
else val = 0 ;
return val;
}
inline pair< lld,lld> calculate_cost( lld index) {
lld i,x,y,l_cost,u_cost,m_cost;
pair< lld,lld> ins,pop;
for ( i= 1 ; i< index; i++ ) {
x = arrX[ i] ; y = arrY[ i] ;
l_cost = cost( x,y- 1 ) + a;
u_cost = cost( x- 1 ,y) + a;
m_cost = cost( x- 1 ,y- 1 ) + b* ( s1[ x- 1 ] ! = s2[ y- 1 ] ) ;
mapInsert( cost_map, make_pair( x,y) , min( l_cost, min( u_cost, m_cost) ) ) ;
//debug(x,y,l_cost,u_cost,m_cost,cost_map[make_pair(x,y)], s1[x-1], s2[y-1]);
}
return make_pair( arrX[ index- 1 ] ,arrY[ index- 1 ] ) ;
}
lld solve( ) {
lld index,total_cost;
init( ) ;
index = numbering( ) ;
pair< lld,lld> ans = calculate_cost( index) ;
lld x = ans.first , y = ans.second ;
total_cost = cost( x,y) + a* ( len2- y) ;
//debug("sssss",x,y,total_cost,len2,k,cost(x,y),a);
if ( total_cost<= k) return total_cost;
else return - 1 ;
}
int main( )
{
#ifdef LOCAL
freopen ( "input.in" ,"r" ,stdin ) ;
#endif
//std::ios_base::sync_with_stdio (false);
lld t;
inputInt( t) ;
while ( t-- ) {
inputString( s1) ;
inputString( s2) ;
//cin>>s1>>s2;
inputInt( a) ;
inputInt( b) ;
inputInt( k) ;
len1 = s1.length ( ) ;
len2 = s2.length ( ) ;
if ( len2< len1)
{
swap( len1,len2) ;
swap( s1,s2) ;
}
if ( a== 0 ) {
printf ( "0\n " ) ;
continue ;
}
if ( k== 0 || ( len2- len1) * a> k) {
printf ( "-1\n " ) ;
continue ;
}
printf ( "%lld\n " ,solve( ) ) ;
}
}
Ly8jaW5jbHVkZSBHUkFQSAovLyNkZWZpbmUgREVCVUcgICAgICAgLy9jb21tZW50IHdoZW4geW91IGhhdmUgdG8gZGlzYWJsZSBhbGwgZGVidWcgbWFjcm9zLgovLyNkZWZpbmUgTE9DQUwgICAgIC8vdW5jb21tZW50IGZvciB0ZXN0aW5nIGZyb20gbG9jYWwgZmlsZQojZGVmaW5lIE5ERUJVRyAgICAvL2NvbW1lbnQgd2hlbiBhbGwgYXNzZXJ0IHN0YXRlbWVudHMgaGF2ZSB0byBiZSBkaXNhYmxlZC4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxmc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxjdGltZT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxjc3RkYXJnPgojaW5jbHVkZSA8dXRpbGl0eT4gLy9zdGQ6OnBhaXIKI2luY2x1ZGUgPGNhc3NlcnQ+CiNkZWZpbmUgZmQoaSxhKSBmb3IoaT0xO2k8PWE7aSsrKQojZGVmaW5lIGZhKGksYSxiKSBmb3IoaT1hO2k8PWI7aSsrKQojZGVmaW5lIGZzKGksYSxiLGMpIGZvcihpPWE7aTw9YjtpKz1jKQojZGVmaW5lIHRyKGMsaSkgZm9yKHR5cGVvZihjLmJlZ2luKCkpIGkgPSAoYykuYmVnaW4oKTsgaSAhPSAoYykuZW5kKCk7IGkrKykgCiNkZWZpbmUgcHJlc2VudChjLHgpICgoYykuZmluZCh4KSAhPSAoYykuZW5kKCkpIAojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsb2cyKHgpIChsb2coeCkvbG9nKDIpKQojZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoMVsmYXJyXS1hcnIpICAgICAgCiNkZWZpbmUgbGxkIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIElORiAxMDAwMDAwMDAwCiNkZWZpbmUgZ2NkIF9fZ2NkCiNkZWZpbmUgZXF1YWxzKGEsYikgKGEuY29tcGFyZVRvKGIpPT0wKSAgICAvL2ZvciBzdHJpbmdzIG9ubHkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNpZmRlZiBERUJVRwojZGVmaW5lIGRlYnVnKGFyZ3MuLi4pICAgICAgICAgICAge2RiZyxhcmdzOyBjZXJyPDxlbmRsO30KI2Vsc2UKI2RlZmluZSBkZWJ1ZyhhcmdzLi4uKSAgICAgICAgICAgICAgLy8gSnVzdCBzdHJpcCBvZmYgYWxsIGRlYnVnIHRva2VucwojZW5kaWYKCiNpZmRlZiBHUkFQSAojaW5jbHVkZSAiZHJhd0dyYXBoLmNwcCIKI2VuZGlmCgpzdHJ1Y3QgZGVidWdnZXIKewogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZGVidWdnZXImIG9wZXJhdG9yICwgKGNvbnN0IFQmIHYpCiAgICB7ICAgIAogICAgICAgIGNlcnI8PHY8PCIgIjsgICAgCiAgICAgICAgcmV0dXJuICp0aGlzOyAgICAKICAgIH0KCn1kYmc7Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdm9pZCBpbnB1dEludChUICZuICkKewogICAgbj0wOwoKICAgIFQgY2g9Z2V0Y2hhcl91bmxvY2tlZCgpOwogICAgLyppbnQgc2lnbj0xOwogICAgd2hpbGUoKCBjaCA8ICcwJyB8fCBjaCA+ICc5JykgJiYgY2ghPSctJykKICAgICAgY2g9Z2V0Y2hhcl91bmxvY2tlZCgpOwogICAgaWYoY2g9PSctJykKICAgIHsKICAgICAgICBzaWduPS0xOwogICAgICAgIGNoPWdldGNoYXJfdW5sb2NrZWQoKTsKICAgIH0KICAgIHdoaWxlKCAgY2ggPj0gJzAnICYmIGNoIDw9ICc5JyApCiAgICAgICBuID0gKG48PDMpKyhuPDwxKSArIGNoLScwJywgY2g9Z2V0Y2hhcl91bmxvY2tlZCgpOwogICAgICAgICBuKj1zaWduOyovCiAgICB3aGlsZSggY2ggPCAnMCcgfHwgY2ggPiAnOScpCiAgICAgIGNoPWdldGNoYXJfdW5sb2NrZWQoKTsKICAgIHdoaWxlKCAgY2ggPj0gJzAnICYmIGNoIDw9ICc5JyApCiAgICAgICAgbiA9IChuPDwzKSsobjw8MSkgKyBjaC0nMCcsIGNoPWdldGNoYXJfdW5sb2NrZWQoKTsKfQoKLy8gaW5saW5lIHZvaWQgaW5wdXRTdHJpbmcoc3RyaW5nICZzKQovLyB7Ci8vICBjaGFyIGNoPWdldGNoYXJfdW5sb2NrZWQoKTsKLy8gIHdoaWxlKGNoPCdhJyB8fCBjaCA+J3onKWNoPWdldGNoYXJfdW5sb2NrZWQoKTsKLy8gIHM9IiI7Ci8vICB3aGlsZShjaD49J2EnICYmIGNoPD0neicpCi8vICAgICAgcys9Y2gsIGNoPWdldGNoYXJfdW5sb2NrZWQoKTsKLy8gfQoKaW5saW5lIHZvaWQgaW5wdXRTdHJpbmcoc3RyaW5nICZzKQp7CiAgICBjaGFyIGNoPWdldGNoYXJfdW5sb2NrZWQoKTsKICAgIHM9IiI7CiAgICB3aGlsZShjaCE9J1xuJykKICAgICAgICBzKz1jaCwgY2g9Z2V0Y2hhcl91bmxvY2tlZCgpOwp9CgoKdHlwZWRlZiBzdHJ1Y3R7CiAgICBpbnQgb3BlcmF0b3IoKShjb25zdCBwYWlyPGludCxpbnQ+ICZrKSBjb25zdHsKICAgICAgICByZXR1cm4gKGsuZmlyc3QqMTAwMDAwK2suc2Vjb25kKSVNT0Q7CiAgICB9Cn1teUhhc2g7CgoKCnN0cmluZyBzMSxzMjsKbGxkIGxlbjEsIGxlbjIsYSxiLGs7CnR5cGVkZWYgdW5vcmRlcmVkX21hcDxwYWlyPGxsZCxsbGQ+LCBsbGQsIG15SGFzaD4gTXlNYXA7Ck15TWFwIG1wLCBjb3N0X21hcDsKbGxkIGFyclhbMjAxMDAwMDFdOwpsbGQgYXJyWVsyMDEwMDAwMV07CgppbmxpbmUgbGxkIGFjdHVhbEsoKXsKICAgIHJldHVybiBrL2ErMTsKfQoKCgppbmxpbmUgdm9pZCBtYXBJbnNlcnQoTXlNYXAgJm0sIHBhaXI8bGxkLGxsZD4gcCwgbGxkIHZhbHVlKXsKICAgIG0uaW5zZXJ0KG1ha2VfcGFpcihwLHZhbHVlKSk7Cn0KCmlubGluZSBsbGQgbnVtYmVyaW5nKCl7CiAgICBsbGQgbWEsbWksaSxqLGluZGV4PTEsIHQ9IGFjdHVhbEsoKTsKICAgIGZvcihpPTE7aTw9bGVuMTtpKyspewogICAgICAgIG1hID0gbWF4KChsbGQpMSxpLXQpOwogICAgICAgIG1pID0gbWluKGkrdCxsZW4yKTsKICAgICAgICBmb3Ioaj1tYTtqPD1taTtqKyspewogICAgICAgICAgICBhcnJYW2luZGV4XSA9IGk7CiAgICAgICAgICAgIGFycllbaW5kZXhdID0gajsKICAgICAgICAgICAgbWFwSW5zZXJ0KG1wLG1ha2VfcGFpcihpLGopLGluZGV4KTsKICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gaW5kZXg7Cn0KCmlubGluZSB2b2lkIGluaXQoKXsKICAgIG1wLmNsZWFyKCk7CiAgICBjb3N0X21hcC5jbGVhcigpOwogICAgbGxkIGksIHQgPSBhY3R1YWxLKCk7CiAgICBmb3IoaT0wO2k8PXQ7aSsrKW1hcEluc2VydChjb3N0X21hcCwgbWFrZV9wYWlyKGksMCksIGkqYSk7CiAgICBmb3IoaT0wO2k8PXQ7aSsrKW1hcEluc2VydChjb3N0X21hcCwgbWFrZV9wYWlyKDAsaSksIGkqYSk7Cn0KCmlubGluZSBsbGQgY29zdChsbGQgeCwgbGxkIHkpewogICAgcGFpcjxsbGQsIGxsZD4gcCA9IG1ha2VfcGFpcih4LHkpOwogICAgbGxkIHZhbDsKICAgIGlmKGNvc3RfbWFwLmZpbmQocCkhPWNvc3RfbWFwLmVuZCgpKXZhbCA9IGNvc3RfbWFwW3BdOyAgIC8vcHJlc2VudAogICAgZWxzZSBpZihhKSB2YWwgPSAobGxkKUlORjsgIAogICAgZWxzZSB2YWwgPSAwOwogICAgcmV0dXJuIHZhbDsKfQoKaW5saW5lIHBhaXI8bGxkLGxsZD4gY2FsY3VsYXRlX2Nvc3QobGxkIGluZGV4KXsKICAgIGxsZCBpLHgseSxsX2Nvc3QsdV9jb3N0LG1fY29zdDsKICAgIHBhaXI8bGxkLGxsZD4gaW5zLHBvcDsKICAgIGZvcihpPTE7aTxpbmRleDtpKyspewoKICAgICAgICB4ID0gYXJyWFtpXTsgeSA9IGFycllbaV07CiAgICAgICAgbF9jb3N0ID0gY29zdCh4LHktMSkrYTsKICAgICAgICB1X2Nvc3QgPSBjb3N0KHgtMSx5KSthOwogICAgICAgIG1fY29zdCA9IGNvc3QoeC0xLHktMSkrYiooczFbeC0xXSE9czJbeS0xXSk7CiAgICAgICAgbWFwSW5zZXJ0KGNvc3RfbWFwLCBtYWtlX3BhaXIoeCx5KSwgbWluKGxfY29zdCwgbWluKHVfY29zdCwgbV9jb3N0KSkpOwogICAgICAgIC8vZGVidWcoeCx5LGxfY29zdCx1X2Nvc3QsbV9jb3N0LGNvc3RfbWFwW21ha2VfcGFpcih4LHkpXSwgczFbeC0xXSwgczJbeS0xXSk7CiAgICB9CiAgICByZXR1cm4gbWFrZV9wYWlyKGFyclhbaW5kZXgtMV0sYXJyWVtpbmRleC0xXSk7Cn0KCmxsZCBzb2x2ZSgpewogICAgbGxkIGluZGV4LHRvdGFsX2Nvc3Q7CiAgICBpbml0KCk7CiAgICBpbmRleCA9IG51bWJlcmluZygpOwogICAgcGFpcjxsbGQsbGxkPiBhbnMgPSBjYWxjdWxhdGVfY29zdChpbmRleCk7CiAgICBsbGQgeCA9IGFucy5maXJzdCwgeSA9IGFucy5zZWNvbmQ7CiAgICB0b3RhbF9jb3N0ID0gY29zdCh4LHkpK2EqKGxlbjIteSk7CiAgICAvL2RlYnVnKCJzc3NzcyIseCx5LHRvdGFsX2Nvc3QsbGVuMixrLGNvc3QoeCx5KSxhKTsKICAgIGlmKHRvdGFsX2Nvc3Q8PWspcmV0dXJuIHRvdGFsX2Nvc3Q7CiAgICBlbHNlIHJldHVybiAtMTsKfQoKaW50IG1haW4oKQp7CiNpZmRlZiBMT0NBTAogICAgZnJlb3BlbigiaW5wdXQuaW4iLCJyIixzdGRpbik7CiNlbmRpZgogICAgIC8vc3RkOjppb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvIChmYWxzZSk7CiAgICAgbGxkIHQ7CiAgICAgaW5wdXRJbnQodCk7CgogICAgIHdoaWxlKHQtLSl7CiAgICAgICAgIGlucHV0U3RyaW5nKHMxKTsKICAgICAgICAgaW5wdXRTdHJpbmcoczIpOwogICAgICAgICAvL2Npbj4+czE+PnMyOwogICAgICAgICBpbnB1dEludChhKTsKICAgICAgICAgaW5wdXRJbnQoYik7CiAgICAgICAgIGlucHV0SW50KGspOwogICAgICAgICBsZW4xID0gczEubGVuZ3RoKCk7CiAgICAgICAgIGxlbjIgPSBzMi5sZW5ndGgoKTsKICAgICAgICAgaWYobGVuMjxsZW4xKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2FwKGxlbjEsbGVuMik7CiAgICAgICAgICAgICBzd2FwKHMxLHMyKTsKICAgICAgICAgfQogICAgICAgICBpZihhPT0wKXsKICAgICAgICAgICAgIHByaW50ZigiMFxuIik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZihrPT0wIHx8IChsZW4yLWxlbjEpKmE+ayl7CiAgICAgICAgICAgICBwcmludGYoIi0xXG4iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHByaW50ZigiJWxsZFxuIixzb2x2ZSgpKTsKICAgICB9Cn0=
compilation info
In file included from /usr/include/c++/4.8/unordered_map:35:0,
from prog.cpp:15:
/usr/include/c++/4.8/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the \
^
prog.cpp:117:9: error: ‘unordered_map’ does not name a type
typedef unordered_map<pair<lld,lld>, lld, myHash> MyMap;
^
prog.cpp:118:1: error: ‘MyMap’ does not name a type
MyMap mp, cost_map;
^
prog.cpp:128:23: error: variable or field ‘mapInsert’ declared void
inline void mapInsert(MyMap &m, pair<lld,lld> p, lld value){
^
prog.cpp:128:23: error: ‘MyMap’ was not declared in this scope
prog.cpp:128:30: error: ‘m’ was not declared in this scope
inline void mapInsert(MyMap &m, pair<lld,lld> p, lld value){
^
prog.cpp:128:47: error: expected primary-expression before ‘p’
inline void mapInsert(MyMap &m, pair<lld,lld> p, lld value){
^
prog.cpp:39:13: error: expected primary-expression before ‘long’
#define lld long long int
^
prog.cpp:128:50: note: in expansion of macro ‘lld’
inline void mapInsert(MyMap &m, pair<lld,lld> p, lld value){
^
prog.cpp: In function ‘long long int numbering()’:
prog.cpp:140:23: error: ‘mp’ was not declared in this scope
mapInsert(mp,make_pair(i,j),index);
^
prog.cpp:140:46: error: ‘mapInsert’ was not declared in this scope
mapInsert(mp,make_pair(i,j),index);
^
prog.cpp: In function ‘void init()’:
prog.cpp:148:5: error: ‘mp’ was not declared in this scope
mp.clear();
^
prog.cpp:149:5: error: ‘cost_map’ was not declared in this scope
cost_map.clear();
^
prog.cpp:151:61: error: ‘mapInsert’ was not declared in this scope
for(i=0;i<=t;i++)mapInsert(cost_map, make_pair(i,0), i*a);
^
prog.cpp:152:61: error: ‘mapInsert’ was not declared in this scope
for(i=0;i<=t;i++)mapInsert(cost_map, make_pair(0,i), i*a);
^
prog.cpp: In function ‘long long int cost(long long int, long long int)’:
prog.cpp:158:8: error: ‘cost_map’ was not declared in this scope
if(cost_map.find(p)!=cost_map.end())val = cost_map[p]; //present
^
prog.cpp: In function ‘std::pair<long long int, long long int> calculate_cost(long long int)’:
prog.cpp:173:19: error: ‘cost_map’ was not declared in this scope
mapInsert(cost_map, make_pair(x,y), min(l_cost, min(u_cost, m_cost)));
^
prog.cpp:173:77: error: ‘mapInsert’ was not declared in this scope
mapInsert(cost_map, make_pair(x,y), min(l_cost, min(u_cost, m_cost)));
^
stdout