//PA2016, runda 3, Cieplo-zimno // Andrzej Pezarski #include "cielib.h" #include <cstdio> #include <cstdlib> #include <vector> #include <algorithm> #include <queue> using namespace std; const int maxD=500; vector<pair<int, int> > V; int P[maxD]; int D, R, K; int main() { D = podajD(); K = podajK(); R = podajR(); V.resize(D, make_pair(0, R)); while(1) { pair<int, int> maxt(0, -1); for (int i=0; i<D; i++) { maxt=max(maxt, make_pair(V[i].second-V[i].first, i)); } if(maxt.first==2) break; int j=maxt.second; for (int i=0; i<D; i++) P[i]=(V[i].first+V[i].second)/2; P[j]=V[j].second; czyCieplo(P); P[j]=V[j].first; if (czyCieplo(P)) V[j].second=(V[j].first+V[j].second+1)/2; else V[j].first=(V[j].first+V[j].second)/2; } for (int i=0; i<D; i++) P[i]=max(1, min(R-1, (V[i].first+V[i].second)/2)); for (int i=0; i<D; i++) { P[i]--; czyCieplo(P); P[i]+=2; if (!czyCieplo(P)) { P[i]-=2; if (!czyCieplo(P)) P[i]++; } } znalazlem(P); 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 | //PA2016, runda 3, Cieplo-zimno // Andrzej Pezarski #include "cielib.h" #include <cstdio> #include <cstdlib> #include <vector> #include <algorithm> #include <queue> using namespace std; const int maxD=500; vector<pair<int, int> > V; int P[maxD]; int D, R, K; int main() { D = podajD(); K = podajK(); R = podajR(); V.resize(D, make_pair(0, R)); while(1) { pair<int, int> maxt(0, -1); for (int i=0; i<D; i++) { maxt=max(maxt, make_pair(V[i].second-V[i].first, i)); } if(maxt.first==2) break; int j=maxt.second; for (int i=0; i<D; i++) P[i]=(V[i].first+V[i].second)/2; P[j]=V[j].second; czyCieplo(P); P[j]=V[j].first; if (czyCieplo(P)) V[j].second=(V[j].first+V[j].second+1)/2; else V[j].first=(V[j].first+V[j].second)/2; } for (int i=0; i<D; i++) P[i]=max(1, min(R-1, (V[i].first+V[i].second)/2)); for (int i=0; i<D; i++) { P[i]--; czyCieplo(P); P[i]+=2; if (!czyCieplo(P)) { P[i]-=2; if (!czyCieplo(P)) P[i]++; } } znalazlem(P); return 0; } |