#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
#define MAX 100
 
typedef struct {
    char simbol[3];
    int jumlah;
} Unsur;
 
int ambilAngka(char *s, int *i) {
    int angka = 0;
        angka = angka * 10 + (s[*i] - '0');
        (*i)++;
    }
    if (angka == 0) angka = 1;
    return angka;
}
 
int main() {
    char rumus[MAX];
    Unsur daftar[50];
    int count = 0;
 
    printf("Masukkan rumus kimia: ");  
 
    for (int i = 0; i < len;) {
            char simbol[3] = "";
            simbol[0] = rumus[i];
            int j = i + 1;
            if (j 
< len 
&& islower(rumus
[j
])) {                 simbol[1] = rumus[j];
                j++;
            }
 
            int angka = ambilAngka(rumus, &j);
 
            // Cek apakah unsur sudah ada
            int ditemukan = 0;
            for (int k = 0; k < count; k++) {
                if (strcmp(daftar
[k
].
simbol, simbol
) == 0) {                     daftar[k].jumlah += angka;
                    ditemukan = 1;
                    break;
                }
            }
 
            // Jika belum ada, tambahkan
            if (!ditemukan) {
                strcpy(daftar
[count
].
simbol, simbol
);                 daftar[count].jumlah = angka;
                count++;
            }
 
            i = j;
        } else {
            i++;
        }
    }
 
    // Cetak hasil
    for (int i = 0; i < count; i++) {
        printf("%s %d\n", daftar
[i
].
simbol, daftar
[i
].
jumlah);     }
 
    return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgojZGVmaW5lIE1BWCAxMDAKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgc2ltYm9sWzNdOwogICAgaW50IGp1bWxhaDsKfSBVbnN1cjsKCmludCBhbWJpbEFuZ2thKGNoYXIgKnMsIGludCAqaSkgewogICAgaW50IGFuZ2thID0gMDsKICAgIHdoaWxlIChpc2RpZ2l0KHNbKmldKSkgewogICAgICAgIGFuZ2thID0gYW5na2EgKiAxMCArIChzWyppXSAtICcwJyk7CiAgICAgICAgKCppKSsrOwogICAgfQogICAgaWYgKGFuZ2thID09IDApIGFuZ2thID0gMTsKICAgIHJldHVybiBhbmdrYTsKfQoKaW50IG1haW4oKSB7CiAgICBjaGFyIHJ1bXVzW01BWF07CiAgICBVbnN1ciBkYWZ0YXJbNTBdOwogICAgaW50IGNvdW50ID0gMDsKCiAgICBwcmludGYoIk1hc3Vra2FuIHJ1bXVzIGtpbWlhOiAiKTsKICAgIHNjYW5mKCIlcyIsIHJ1bXVzKTsKCiAgICBpbnQgbGVuID0gc3RybGVuKHJ1bXVzKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjspIHsKICAgICAgICBpZiAoaXN1cHBlcihydW11c1tpXSkpIHsKICAgICAgICAgICAgY2hhciBzaW1ib2xbM10gPSAiIjsKICAgICAgICAgICAgc2ltYm9sWzBdID0gcnVtdXNbaV07CiAgICAgICAgICAgIGludCBqID0gaSArIDE7CiAgICAgICAgICAgIGlmIChqIDwgbGVuICYmIGlzbG93ZXIocnVtdXNbal0pKSB7CiAgICAgICAgICAgICAgICBzaW1ib2xbMV0gPSBydW11c1tqXTsKICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaW50IGFuZ2thID0gYW1iaWxBbmdrYShydW11cywgJmopOwoKICAgICAgICAgICAgLy8gQ2VrIGFwYWthaCB1bnN1ciBzdWRhaCBhZGEKICAgICAgICAgICAgaW50IGRpdGVtdWthbiA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgY291bnQ7IGsrKykgewogICAgICAgICAgICAgICAgaWYgKHN0cmNtcChkYWZ0YXJba10uc2ltYm9sLCBzaW1ib2wpID09IDApIHsKICAgICAgICAgICAgICAgICAgICBkYWZ0YXJba10uanVtbGFoICs9IGFuZ2thOwogICAgICAgICAgICAgICAgICAgIGRpdGVtdWthbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEppa2EgYmVsdW0gYWRhLCB0YW1iYWhrYW4KICAgICAgICAgICAgaWYgKCFkaXRlbXVrYW4pIHsKICAgICAgICAgICAgICAgIHN0cmNweShkYWZ0YXJbY291bnRdLnNpbWJvbCwgc2ltYm9sKTsKICAgICAgICAgICAgICAgIGRhZnRhcltjb3VudF0uanVtbGFoID0gYW5na2E7CiAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpID0gajsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpKys7CiAgICAgICAgfQogICAgfQoKICAgIC8vIENldGFrIGhhc2lsCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICBwcmludGYoIiVzICVkXG4iLCBkYWZ0YXJbaV0uc2ltYm9sLCBkYWZ0YXJbaV0uanVtbGFoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=