int romanToInt(string s) {
map<char,int> mp;
mp['I']=1;
mp['V']=5;
mp['X']=10;
mp['L']=50;
mp['C']=100;
mp['D']=500;
mp['M']=1000;
int ret=0;
//int unit=1000;
int i=0;
while(i<s.length())
{
if (s[i]=='V'||s[i]=='L'||s[i]=='D')
{
ret += mp[s[i]];
int j=i;
i++;
while(i<s.length()&&mp[s[i]]==mp[s[j]]/5)
{
ret += mp[s[i]];
i++;
}
}
else
{
if (i+1<s.length()&&mp[s[i]]==mp[s[i+1]]/5)
{
ret += 4*mp[s[i]];
i += 2;
}
else
if (i+1<s.length()&&mp[s[i]]==mp[s[i+1]]/10)
{
ret += 9*mp[s[i]];
i += 2;
}
else
{
ret += mp[s[i]];
i++;
while(i<s.length()&&mp[s[i]]==mp[s[i-1]])
{
ret += mp[s[i]];
i++;
}
}
}
}
return ret;
}