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
#include <cstdio>
#include "krazki.h"
#include "message.h"


int main()
{
    int n, m, o;
    long long i;
    n=PipeHeight();
    m=NumberOfDiscs();
    long long kr[m], tab[n];
    for(i=0; i<n; i++) tab[i]=HoleDiameter(i+1);
    for(i=0; i<m; i++) kr[i]=DiscDiameter(i+1);
    for(i=0; i<n-1; i++)
        if(tab[i+1]>tab[i]) tab[i+1]=tab[i];
    o=n;
    for(i=0; i<m; i++)
    {
        long long a=kr[i];
        if(tab[0]<a || o==0) {printf("0"); return 0;} else{
        int p, k, s;
        p=-1; k=o-1;
        while(p<k)
        {
            s=(p+k+1)/2;
            if(a<=tab[s]) p=s;
            else k=s-1;
        }
        o=k;}
    }
    if(MyNodeId()==0) printf("%d", o+1);
}