Cod sursa(job #2582973)
Utilizator | IDorando tomaionut | Data | 17 martie 2020 16:39:15 |
---|---|---|---|
Problema | Carnati | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.33 kb |
#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;
}