Cod sursa(job #2582973)

Utilizator tomaionutIDorando 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;
}