xxxxxxxxxx
struct S
{
string s;
int i;
}
void main()
{
import std.experimental.all;
S[] sarr;
sarr.length = 6;
sarr[0].s = "a";
sarr[1].s = "a";
sarr[2].s = "b";
sarr[3].s = "b";
sarr[4].s = "c";
sarr[5].s = "c";
sarr[0].i = 1;
sarr[1].i = 2;
sarr[2].i = 4;
sarr[3].i = 8;
sarr[4].i = 16;
sarr[5].i = 32;
auto res = sarr.chunkBy!((a, b) => a.s == b.s).map!(a => tuple(a.front.s, a.map!(b => b.i).sum));
res.each!writeln;
}