//
// main.cpp
// cie POTYCZKI
//
// Created by Lukasz Kawka on 23/11/2016.
// Copyright © 2016 Lukasz Kawka. All rights reserved.
//
#include <cstdio>
#include <bitset>
#include "cielib.h"
using namespace std;
const int maxd=500+10, duzo=1e6+10;
int t[maxd];
bitset <duzo> u;
int main()
{
int d=podajD(), k=podajK(), r=podajR();
u[0]=czyCieplo(t);
for(int i=0;i<d;i++)
{
int pocz=0, kon=r, licznik=0;
bool gora=true, sprawdz=true;
while(pocz<kon)
{
licznik++;
if(gora)
t[i]=kon;
else
t[i]=pocz;
if(sprawdz)
u[licznik]=czyCieplo(t);
else
sprawdz=true;
if(gora)
{
if(u[licznik])
{
gora=false;
pocz=(pocz+kon)/2+1;
}
else
{
kon=(pocz+kon)/2;
sprawdz=false;
licznik-=2;
}
}
else
{
if(u[licznik])
{
kon=(pocz+kon)/2;
gora=true;
}
else
{
pocz=(pocz+kon)/2+1;
sprawdz=false;
licznik-=2;
}
}
}
}
znalazlem(t);
}
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 | // // main.cpp // cie POTYCZKI // // Created by Lukasz Kawka on 23/11/2016. // Copyright © 2016 Lukasz Kawka. All rights reserved. // #include <cstdio> #include <bitset> #include "cielib.h" using namespace std; const int maxd=500+10, duzo=1e6+10; int t[maxd]; bitset <duzo> u; int main() { int d=podajD(), k=podajK(), r=podajR(); u[0]=czyCieplo(t); for(int i=0;i<d;i++) { int pocz=0, kon=r, licznik=0; bool gora=true, sprawdz=true; while(pocz<kon) { licznik++; if(gora) t[i]=kon; else t[i]=pocz; if(sprawdz) u[licznik]=czyCieplo(t); else sprawdz=true; if(gora) { if(u[licznik]) { gora=false; pocz=(pocz+kon)/2+1; } else { kon=(pocz+kon)/2; sprawdz=false; licznik-=2; } } else { if(u[licznik]) { kon=(pocz+kon)/2; gora=true; } else { pocz=(pocz+kon)/2+1; sprawdz=false; licznik-=2; } } } } znalazlem(t); } |
English