#include <stdio.h>
void wait(int note_ligne[16][4],int a){
//getchar();
int i;
int j;
for (i = 0; i < 16; i++) {
for (j = 0; j < 4; j++) {
printf("%02d ", note_ligne[i][j]);
}
printf("\n");
}
}
int main() {
int note_ligne[16][4] = {
{11,23,27,35},
{18,0,0,0},
{23,0,0,0},
{27,0,0,0},
{32,44,0,0},
{18,0,0,0},
{30,42,0,0},
{18,0,0,0},
{11,23,27,35},
{18,0,0,0},
{23,0,0,0},
{27,0,0,0},
{32,44,0,0},
{18,0,0,0},
{30,42,0,0},
{18,0,0,0}
};
char durees[16][4] = {
{'R','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'R','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
{'C','C','C','C'},
};
int colonne;
int ligne;
int a;
for (ligne=0;ligne!= 16;ligne++){
for (colonne=0;colonne<4;colonne++){
if (durees[ligne][colonne]=='C' || durees[ligne][colonne]=='D'){
//colonne++;
}
if (durees[ligne][colonne]=='N'){
for (a=1;a<2;a++){
note_ligne[ligne+a][colonne+3]=note_ligne[ligne+a][colonne+2];
note_ligne[ligne+a][colonne+2]=note_ligne[ligne+a][colonne+1];
note_ligne[ligne+a][colonne+1]=note_ligne[ligne+a][colonne];
note_ligne[ligne+a][colonne]=note_ligne[ligne][colonne];
}
colonne++;
}
if (durees[ligne][colonne]=='B'){
for (a=1;a<4;a++){
note_ligne[ligne+a][colonne+3]=note_ligne[ligne+a][colonne+2];
note_ligne[ligne+a][colonne+2]=note_ligne[ligne+a][colonne+1];
note_ligne[ligne+a][colonne+1]=note_ligne[ligne+a][colonne];
note_ligne[ligne+a][colonne]=note_ligne[ligne][colonne];
}
colonne++;
}
if (durees[ligne][colonne]=='R'){
for (a=1;a<8;a++){
note_ligne[ligne+a][colonne+3]=note_ligne[ligne+a][colonne+2];
//wait(note_ligne,a);
note_ligne[ligne+a][colonne+2]=note_ligne[ligne+a][colonne+1];
//wait(note_ligne,a);
note_ligne[ligne+a][colonne+1]=note_ligne[ligne+a][colonne];
//wait(note_ligne,a);
note_ligne[ligne+a][colonne]=note_ligne[ligne][colonne];
//wait(note_ligne,a);
}
colonne++;
}
}
}
wait(note_ligne,a);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHdhaXQoaW50IG5vdGVfbGlnbmVbMTZdWzRdLGludCBhKXsKICAgIC8vZ2V0Y2hhcigpOwogICAgaW50IGk7CiAgICBpbnQgajsKCiAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCA0OyBqKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlMDJkICIsIG5vdGVfbGlnbmVbaV1bal0pOwoKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQp9CgoKaW50IG1haW4oKSB7CiAgICBpbnQgbm90ZV9saWduZVsxNl1bNF0gPSB7CiAgICAgICAgezExLDIzLDI3LDM1fSwKICAgICAgICB7MTgsMCwwLDB9LAogICAgICAgIHsyMywwLDAsMH0sCiAgICAgICAgezI3LDAsMCwwfSwKICAgICAgICB7MzIsNDQsMCwwfSwKICAgICAgICB7MTgsMCwwLDB9LAogICAgICAgIHszMCw0MiwwLDB9LAogICAgICAgIHsxOCwwLDAsMH0sCiAgICAgICAgezExLDIzLDI3LDM1fSwKICAgICAgICB7MTgsMCwwLDB9LAogICAgICAgIHsyMywwLDAsMH0sCiAgICAgICAgezI3LDAsMCwwfSwKICAgICAgICB7MzIsNDQsMCwwfSwKICAgICAgICB7MTgsMCwwLDB9LAogICAgICAgIHszMCw0MiwwLDB9LAogICAgICAgIHsxOCwwLDAsMH0KICAgIH07CgogICAgY2hhciBkdXJlZXNbMTZdWzRdID0gewogICAgICAgIHsnUicsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnUicsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgICAgIHsnQycsJ0MnLCdDJywnQyd9LAogICAgfTsKCiAgICBpbnQgY29sb25uZTsKICAgIGludCBsaWduZTsKICAgIGludCBhOwogICAgZm9yIChsaWduZT0wO2xpZ25lIT0gMTY7bGlnbmUrKyl7CiAgICAgICAgZm9yIChjb2xvbm5lPTA7Y29sb25uZTw0O2NvbG9ubmUrKyl7CiAgICAgICAgICAgIGlmIChkdXJlZXNbbGlnbmVdW2NvbG9ubmVdPT0nQycgfHwgZHVyZWVzW2xpZ25lXVtjb2xvbm5lXT09J0QnKXsKICAgICAgICAgICAgICAgIC8vY29sb25uZSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkdXJlZXNbbGlnbmVdW2NvbG9ubmVdPT0nTicpewogICAgICAgICAgICAgICAgZm9yIChhPTE7YTwyO2ErKyl7CiAgICAgICAgICAgICAgICAgICAgbm90ZV9saWduZVtsaWduZSthXVtjb2xvbm5lKzNdPW5vdGVfbGlnbmVbbGlnbmUrYV1bY29sb25uZSsyXTsKICAgICAgICAgICAgICAgICAgICBub3RlX2xpZ25lW2xpZ25lK2FdW2NvbG9ubmUrMl09bm90ZV9saWduZVtsaWduZSthXVtjb2xvbm5lKzFdOwogICAgICAgICAgICAgICAgICAgIG5vdGVfbGlnbmVbbGlnbmUrYV1bY29sb25uZSsxXT1ub3RlX2xpZ25lW2xpZ25lK2FdW2NvbG9ubmVdOwogICAgICAgICAgICAgICAgICAgIG5vdGVfbGlnbmVbbGlnbmUrYV1bY29sb25uZV09bm90ZV9saWduZVtsaWduZV1bY29sb25uZV07CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29sb25uZSsrOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZHVyZWVzW2xpZ25lXVtjb2xvbm5lXT09J0InKXsKICAgICAgICAgICAgICAgIGZvciAoYT0xO2E8NDthKyspewogICAgICAgICAgICAgICAgICAgIG5vdGVfbGlnbmVbbGlnbmUrYV1bY29sb25uZSszXT1ub3RlX2xpZ25lW2xpZ25lK2FdW2NvbG9ubmUrMl07CiAgICAgICAgICAgICAgICAgICAgbm90ZV9saWduZVtsaWduZSthXVtjb2xvbm5lKzJdPW5vdGVfbGlnbmVbbGlnbmUrYV1bY29sb25uZSsxXTsKICAgICAgICAgICAgICAgICAgICBub3RlX2xpZ25lW2xpZ25lK2FdW2NvbG9ubmUrMV09bm90ZV9saWduZVtsaWduZSthXVtjb2xvbm5lXTsKICAgICAgICAgICAgICAgICAgICBub3RlX2xpZ25lW2xpZ25lK2FdW2NvbG9ubmVdPW5vdGVfbGlnbmVbbGlnbmVdW2NvbG9ubmVdOwoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbG9ubmUrKzsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGR1cmVlc1tsaWduZV1bY29sb25uZV09PSdSJyl7CiAgICAgICAgICAgICAgICBmb3IgKGE9MTthPDg7YSsrKXsKICAgICAgICAgICAgICAgICAgICBub3RlX2xpZ25lW2xpZ25lK2FdW2NvbG9ubmUrM109bm90ZV9saWduZVtsaWduZSthXVtjb2xvbm5lKzJdOwogICAgICAgICAgICAgICAgICAgIC8vd2FpdChub3RlX2xpZ25lLGEpOwogICAgICAgICAgICAgICAgICAgIG5vdGVfbGlnbmVbbGlnbmUrYV1bY29sb25uZSsyXT1ub3RlX2xpZ25lW2xpZ25lK2FdW2NvbG9ubmUrMV07CiAgICAgICAgICAgICAgICAgICAgLy93YWl0KG5vdGVfbGlnbmUsYSk7CiAgICAgICAgICAgICAgICAgICAgbm90ZV9saWduZVtsaWduZSthXVtjb2xvbm5lKzFdPW5vdGVfbGlnbmVbbGlnbmUrYV1bY29sb25uZV07CiAgICAgICAgICAgICAgICAgICAgLy93YWl0KG5vdGVfbGlnbmUsYSk7CiAgICAgICAgICAgICAgICAgICAgbm90ZV9saWduZVtsaWduZSthXVtjb2xvbm5lXT1ub3RlX2xpZ25lW2xpZ25lXVtjb2xvbm5lXTsKICAgICAgICAgICAgICAgICAgICAgICAgLy93YWl0KG5vdGVfbGlnbmUsYSk7CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29sb25uZSsrOwoKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIAogICAgICAgIH0KICAgIAogICAgfQogICAgd2FpdChub3RlX2xpZ25lLGEpOwogICAgcmV0dXJuIDA7Cn0=