#include <cstdlib>
#include <iostream>
#include "krazki.h"
#include "message.h"
using namespace std;
long long int minima[30000007];
int main() {
// Tylko zerowy komputer coś liczy.
if (MyNodeId() != 0) {
return EXIT_SUCCESS;
}
int n = PipeHeight(), m = NumberOfDiscs();
int depth;
if(n >= 30000007)
depth = 0;
else
{
for(int i = 1; i <= n; ++i)
{
if(i == 1)
minima[i] = HoleDiameter(i);
else
minima[i] = min(minima[i - 1], HoleDiameter(i));
}
int wsk = n;
for(int i = 1; i <= m && wsk > 0; ++i)
{
long long int x = DiscDiameter(i);
if(minima[wsk] >= x && i > 1)
--wsk;
while(wsk > 0 && minima[wsk] < x)
--wsk;
}
depth = max(0, wsk);
}
/*
int depth;
long long int max_disc_diameter = 0;
for (int i = 1; i <= NumberOfDiscs(); i++) {
max_disc_diameter = std::max(max_disc_diameter, DiscDiameter(i));
}
if (HoleDiameter(PipeHeight()) < max_disc_diameter) {
depth = 0;
} else {
depth = std::max(0, PipeHeight() - NumberOfDiscs() + 1);
}
std::cout << depth << std::endl;
*/
cout << depth << endl;
return EXIT_SUCCESS;
}
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 | #include <cstdlib> #include <iostream> #include "krazki.h" #include "message.h" using namespace std; long long int minima[30000007]; int main() { // Tylko zerowy komputer coś liczy. if (MyNodeId() != 0) { return EXIT_SUCCESS; } int n = PipeHeight(), m = NumberOfDiscs(); int depth; if(n >= 30000007) depth = 0; else { for(int i = 1; i <= n; ++i) { if(i == 1) minima[i] = HoleDiameter(i); else minima[i] = min(minima[i - 1], HoleDiameter(i)); } int wsk = n; for(int i = 1; i <= m && wsk > 0; ++i) { long long int x = DiscDiameter(i); if(minima[wsk] >= x && i > 1) --wsk; while(wsk > 0 && minima[wsk] < x) --wsk; } depth = max(0, wsk); } /* int depth; long long int max_disc_diameter = 0; for (int i = 1; i <= NumberOfDiscs(); i++) { max_disc_diameter = std::max(max_disc_diameter, DiscDiameter(i)); } if (HoleDiameter(PipeHeight()) < max_disc_diameter) { depth = 0; } else { depth = std::max(0, PipeHeight() - NumberOfDiscs() + 1); } std::cout << depth << std::endl; */ cout << depth << endl; return EXIT_SUCCESS; } |
English