#include typedef struct Token { int L,A; // L - delka tokenu }; void doit(void) { int PocetTokenu = 0, index, zavora = 0, kolik = 0; struct Token Pole[250000]; do { scanf("%d %d",&(Pole[PocetTokenu].L), &(Pole[PocetTokenu].A)); if (!((Pole[PocetTokenu].L == 0) && (Pole[PocetTokenu].A == 0))) { int pocet = 0, posledni; /*printf("T:%d !!!\n",PocetTokenu); printf("L%d A%d !!!!\n", (Pole[PocetTokenu].L), (Pole[PocetTokenu].A));*/ if (PocetTokenu == 0) { printf("0\n"); } else { /* posledni = 0; for (index = PocetTokenu-1; index>=zavora; index--) { // printf("i:%d t:%d A:%d!!!!\n",index,PocetTokenu,Pole[index].A); if (Pole[index].A>0) { Pole[index].A -= Pole[PocetTokenu].L; pocet++; posledni = index; } if (Pole[index].A <=0) { // Tento prvek vytahnu for(int p =index; p0) { printf("%d\n",PocetTokenu - zavora); } else { printf("0\n"); } Pole[zavora].A-=Pole[PocetTokenu].L; kolik += Pole[PocetTokenu].L; if (Pole[zavora].A <= 0) { // printf("Menim zavoru \n"); for(int p = PocetTokenu-1; p>zavora; p--) { Pole[p].A -= kolik; // printf("k:%d\n",kolik); if (Pole[p].A>0) { // printf("p:%d A:%d\n",p,Pole[p].A); zavora = p; // break; } } if (Pole[zavora].A <= 0) { zavora = PocetTokenu; } // printf("z%d\n",zavora); kolik = 0; } } } PocetTokenu++; } while (!(((Pole[PocetTokenu-1].L) == 0) && ((Pole[PocetTokenu-1].A) == 0))); // printf("%d %d !!!!\n", (Pole[PocetTokenu].L), (Pole[PocetTokenu].A)); } int main (void) { int a,b; scanf("%d",&a); for(b=0;b