#include <cstdio>
#include "krazki.h"
#include "message.h"
// #define DEBUG 2
using namespace std;
#define MAX_NO 110
#define MAX_D 1000000000000000100
typedef long long int lli;
int n;
int m;
lli _v;
int _i;
lli lmd;
lli md; // max disc diameter
int mdi; // max disc index
lli mp; // min pipe diameter
int mpi; // min pipe index
int mpdi; // min pipe for max disc
int no; // node number
int noc; // node count
int i, j, l;
int r;
int ds, de; // diameters part start, end
int ps, pe; // pipe part start, end
lli tmd[MAX_NO];
int tmdi[MAX_NO];
lli tmp[MAX_NO];
int tmpi[MAX_NO];
int main()
{
noc = NumberOfNodes();
no = MyNodeId();
n = PipeHeight();
m = NumberOfDiscs();
if(no)
{
return 0;
}
if(n < m)
{
if(no)
{
puts("0");
}
return 0;
}
r = n + 1;
for(i = 1; i <= m && r; ++i)
{
md = DiscDiameter(i);
if(lmd < md)
{
#ifdef DEBUG
printf("\tr=%d i=%d md=%lld mp=%lld\n", r, i, md, mp);
#endif
for(j = 1; j < r; ++j)
{
mp = HoleDiameter(j);
if(mp < md)
{
r = j;
}
}
}
--r;
lmd = md;
}
printf("%d\n", r);
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <cstdio> #include "krazki.h" #include "message.h" // #define DEBUG 2 using namespace std; #define MAX_NO 110 #define MAX_D 1000000000000000100 typedef long long int lli; int n; int m; lli _v; int _i; lli lmd; lli md; // max disc diameter int mdi; // max disc index lli mp; // min pipe diameter int mpi; // min pipe index int mpdi; // min pipe for max disc int no; // node number int noc; // node count int i, j, l; int r; int ds, de; // diameters part start, end int ps, pe; // pipe part start, end lli tmd[MAX_NO]; int tmdi[MAX_NO]; lli tmp[MAX_NO]; int tmpi[MAX_NO]; int main() { noc = NumberOfNodes(); no = MyNodeId(); n = PipeHeight(); m = NumberOfDiscs(); if(no) { return 0; } if(n < m) { if(no) { puts("0"); } return 0; } r = n + 1; for(i = 1; i <= m && r; ++i) { md = DiscDiameter(i); if(lmd < md) { #ifdef DEBUG printf("\tr=%d i=%d md=%lld mp=%lld\n", r, i, md, mp); #endif for(j = 1; j < r; ++j) { mp = HoleDiameter(j); if(mp < md) { r = j; } } } --r; lmd = md; } printf("%d\n", r); return 0; } |
English