一封奇怪的信
時間限制:1秒
空間限制:32768K
現在你需要用一臺奇怪的打字機書寫一封書信。信的每行只能容納寬度爲100的字符,也就是說如果寫下某個字符會導致行寬超過100,那麼就要另起一行書寫
信的內容由a-z的26個小寫字母構成,而每個字母的寬度均會事先約定。例如字符寬度約定爲[1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],那麼就代表'a'到'd'四個字母的寬度分別是1,2,3,4,而'e'到'z'的寬度均爲5
那麼按照上述規則將給定內容S書寫成一封信後,這封信共有幾行?最後一行寬度是多少?
輸入描述:
輸入爲兩行: 第一行是存儲了每個字符寬度的字符串,包含26個數字,以1個空格分隔,每個數字均小於等於10 第二行是存儲了待輸入字符的字符串S,字符串S的長度在1到1000之間
輸出描述:
輸出爲信的行數以及最後一行所包含的字符個數,中間以1個空格分隔
輸入例子1:
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 helloworld
輸出例子1:
1 50
例子說明1:
"5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5"規定每個字符寬度爲5 "helloworld"是輸入的字符串S 由於S共包含10個字符,也即共佔用50個字符寬度,因此可以寫在同一行
輸入例子2:
5 5 5 5 5 5 10 10 10 10 10 10 10 10 10 10 10 10 5 5 5 5 5 5 5 5 hahahahahahahaha
輸出例子2:
2 20
例子說明2:
"5 5 5 5 5 5 10 10 10 10 10 10 10 10 10 10 10 10 5 5 5 5 5 5 5 5"規定了每個字符寬度 "hahahahahahahaha"是輸入的字符串S 由於h寬度爲10,a寬度爲5,因此'hahahahahahah'佔用100字符寬度可以寫在第一行,‘aha’寫在第二行也即最後一行。因此字符寬度爲20
#include <iostream>
#include <string.h>
#include <map>
using namespace std;
int main()
{
map<char,int> m;
char c='a';
for(int i=0;i<26;++i)
cin>>m[c++];
char s[1100];
cin>>s;
int sum=0;
int n=0;
for(int i=0;i<strlen(s);i++)
{
if(sum+m[s[i]]>100)
{
n++;
sum=m[s[i]];
}
else
{
sum+=m[s[i]];
}
}
cout<<n+1<<" "<<sum;
return 0;
}