#include #include using namespace std; char in[1000000]; int main(int argc, char* argv[]) { fstream fin("encoding.in"); for (int i=0; i<1000000; i++) { in[i] = 0; } while(fin.getline(in,1000000)) { char last, c; bool cn = false; if (in[0] && !in[1]) { if (in[0]=='1') cout << "1111"; else cout << "1" << in[0] << "1"; cout << endl; continue; } for (int i=0; in[i]; i++) { last = in[i]; c='1'; for (int j=i+1; ; j++) { // cout << "i: " << i << " j: " << j << " c: " << c << " last: " << last << endl; // Ende des ganzen Strings if (!in[j]) { // cout << "i: " << i << " j: " << j << " cn: " << cn << endl; if (cn || c == '1') cout << in[i] << '1'; else cout << c << in[i]; if (cn && (in[i]=='1')) cout << '1'; // if (c == '1') cout << '1'; i=j-1; break; } // 9 Zeichen erreicht? if (j-i==9) { cout << c << in[i]; i=j-1; break; } // das letzte gleiche? if (last == in[j]) { c++; if (cn) cout << '1'; // ende einzelne cn = false; } else { // nicht das gleiche? // ende Count aber mehr als einer /* if (cn && (c > '1')) { cn = false; cout << '1'; } else{}; */ // noch keine 1-nerkette aber jetzt if (!cn && (c == '1')) { cn = true; cout << '1'; } if (cn) cout << in[i]; else cout << c << in[i]; if (cn && (in[i]=='1')) cout << '1'; // if (c=='1') cout << '1'; i=j-1; break; } } } cout << endl; } return 0; }