//Lukasz Janeczko Krakow
#include <iostream>
#include <vector>
#include <algorithm>
#include "krazki.h"
#include "message.h"
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    if(MyNodeId()==0)
        {
            int n, m;
            n=PipeHeight();
            m=NumberOfDiscs();
            int last=n-1; long long fir=DiscDiameter(1ll);
            vector <long long> T(n);
            T[0]=HoleDiameter(1ll);
            if(T[0]<fir)
                last=-1;
            for(long long i=1; i<n && last==n-1; i++)
                {
                    T[i]=min(HoleDiameter(i+1),T[i-1]);
                    if(T[i]<fir)
                        last=i-1;
                }
            bool bad=false; int l, r, s;
            if(last<0)
                bad=true;
            else
                T[last]=0;
            for(long long j=2; j<=m && !bad; j++)
                {
                    fir=DiscDiameter(j);
                    l=0;
                    r=last;
                    while(l!=r)
                        {
                            s=(l+r)/2;
                            if(T[s]<fir)
                                r=s;
                            else
                                l=s+1;
                        }
                    if(l==0)
                        bad=true;
                    else
                        {
                            last=l-1;
                            T[l-1]=0;
                        }
                    //cout << last <<  " " << fir << " " << l <<  " " << r <<  " " <<endl;
                }
            if(bad)
                cout << 0 <<endl;
            else
                cout << last+1 <<endl;
        }
    return 0;
}
        | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | //Lukasz Janeczko Krakow #include <iostream> #include <vector> #include <algorithm> #include "krazki.h" #include "message.h" using namespace std; int main() { ios_base::sync_with_stdio(false); if(MyNodeId()==0) { int n, m; n=PipeHeight(); m=NumberOfDiscs(); int last=n-1; long long fir=DiscDiameter(1ll); vector <long long> T(n); T[0]=HoleDiameter(1ll); if(T[0]<fir) last=-1; for(long long i=1; i<n && last==n-1; i++) { T[i]=min(HoleDiameter(i+1),T[i-1]); if(T[i]<fir) last=i-1; } bool bad=false; int l, r, s; if(last<0) bad=true; else T[last]=0; for(long long j=2; j<=m && !bad; j++) { fir=DiscDiameter(j); l=0; r=last; while(l!=r) { s=(l+r)/2; if(T[s]<fir) r=s; else l=s+1; } if(l==0) bad=true; else { last=l-1; T[l-1]=0; } //cout << last << " " << fir << " " << l << " " << r << " " <<endl; } if(bad) cout << 0 <<endl; else cout << last+1 <<endl; } return 0; } | 
 
            
         English
                    English