// // 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); } |