Pagini recente » Cod sursa (job #1336576) | Cod sursa (job #1643306) | Cod sursa (job #2132927) | Cod sursa (job #2717449) | Cod sursa (job #2582973)
#include <bits/stdc++.h>
using namespace std;
int n,k;
struct Vrajeala
{
int x;
char ch;
}a[200005];
int t[200005],cnt;
int main()
{
int i,j;
char ch;
long long sol=0,sum=0;
cin >> n >> k;
for (i=1; i<=n; i++)
cin >> a[i].x;
for (i=1; i<=n; i++)
cin >> a[i].ch;
cnt=1;
ch=a[1].ch;
sum=a[1].x;
t[cnt]=sum;
a[n+1].ch='A';
for (i=2; i<=n+1;)
{
if (a[i].ch!=ch)
{
ch=a[i].ch;
sol+=sum;
sum=a[i].x;
cnt=1;
t[cnt]=sum;
i++;
}
else
{
t[++cnt]=a[i].x;
sum+=a[i].x;
if (cnt>k)
{
i++;
while (a[i].ch==ch)
{
t[++cnt]=a[i].x;
i++;
}
sum=0;
sort(t+1,t+cnt+1,greater<int>());
for (j=1; j<=k; j++)
sum+=t[j];
sol+=sum;
ch=a[i].ch;
cnt=1;
t[cnt]=a[i].x;
sum=a[i].x;
i++;
if (i==n+1) {sol+=sum; break;}
}
else i++;
}
}
cout << sol;
return 0;
}