#include #include #include using namespace std; typedef long long ll; typedef pair PII; ll bin(ll i,ll j,ll a, vector drahy){ if (i==j) {/*printf("bs L %lld",i);*/return i;} ll m=(i+j)/2; //printf("bs %lld %lld %lld %lld %lld\n",i,j,m,drahy.at(m),a); if (drahy.at(m)<=a) return bin(i,m,a,drahy); else return bin(m+1,j,a,drahy); } int main() { ll voznov; ll drah; while (scanf("%lld %lld\n",&voznov,&drah) && (voznov>0) && (drah>0)) { //printf("\n\n\nSpracuvam vstup s voznami: %lld a drahami: %lld\n",voznov,drah); vector drahy(drah+5,-1); priority_queue < PII, vector, greater > kam; vector dnu(voznov+6); ll last_use=0; int posralo_sa_to=0; for (ll i=0;ivozen && (drahy.at(1+((left+right)/2)))vozen) left=middle; }*/ ll middle=bin(0,last_use,vozen,drahy); //if (i%1000==0) printf("%lld\n",i); if (middle==last_use && last_usevozen) { posralo_sa_to=1; } if (!posralo_sa_to) { drahy.at(middle)=vozen; dnu.at(i)=middle; //kam.at(vozen)=middle; kam.push(PII (vozen,middle)); } // printf("%lld-ty vozen cislo %lld strcim na %lld\n",i,vozen,middle); } if (posralo_sa_to) { printf("Transportation failed\n"); } else { for (ll i=0; i