#include <bits/stdc++.h> #include "cielib.h" using namespace std; long long int d,k,r,a; int zak[510][10]; int poz[510]; int akt,ile; bool czy[510]; void niuszka() { for(int i=0;i<d;i++) { int a,b; if(zak[i][1]==zak[i][2]) { czy[i]=true; ile--; poz[i]=zak[i][1]; } if(i!=akt&&!czy[i]) { if(poz[i]!=zak[i][1]) { poz[i]=zak[i][1]; a=czyCieplo(poz); } else { poz[i]=zak[i][2]; a=czyCieplo(poz); } if(poz[i]!=zak[i][1]) { poz[i]=zak[i][1]; a=czyCieplo(poz); } else { poz[i]=zak[i][2]; b=czyCieplo(poz); } if(a==1||b==1) { akt=i; break; } } } } void licz() { int x[10]; int lol=0; x[1]=1; x[0]=1; while(x[0]!=0||x[1]!=0) { lol++; if(poz[akt]!=zak[akt][1]) { poz[akt]=zak[akt][1]; x[lol%2]=czyCieplo(poz); if(x[lol%2]==1) { if(zak[akt][2]-zak[akt][1]==1) zak[akt][2]=zak[akt][1]; else zak[akt][2]=(zak[akt][2]+zak[akt][1])/2; } } if(poz[akt]!=zak[akt][2]) { poz[akt]=zak[akt][2]; x[lol%2]=czyCieplo(poz); if(x[lol%2]==1) { if(zak[akt][2]-zak[akt][1]==1) zak[akt][1]=zak[akt][2]; else zak[akt][1]=(zak[akt][2]+zak[akt][1])/2; } } } } int main(){ d=podajD(); r=podajR(); k=podajK(); //for(int i=0;i<d;i++) // cin>>akk[i]; int ile=d; czyCieplo(poz); for(int i=0;i<d;i++) zak[i][2]=r; akt=0; while(ile>0) { niuszka(); licz(); } znalazlem(poz); 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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | #include <bits/stdc++.h> #include "cielib.h" using namespace std; long long int d,k,r,a; int zak[510][10]; int poz[510]; int akt,ile; bool czy[510]; void niuszka() { for(int i=0;i<d;i++) { int a,b; if(zak[i][1]==zak[i][2]) { czy[i]=true; ile--; poz[i]=zak[i][1]; } if(i!=akt&&!czy[i]) { if(poz[i]!=zak[i][1]) { poz[i]=zak[i][1]; a=czyCieplo(poz); } else { poz[i]=zak[i][2]; a=czyCieplo(poz); } if(poz[i]!=zak[i][1]) { poz[i]=zak[i][1]; a=czyCieplo(poz); } else { poz[i]=zak[i][2]; b=czyCieplo(poz); } if(a==1||b==1) { akt=i; break; } } } } void licz() { int x[10]; int lol=0; x[1]=1; x[0]=1; while(x[0]!=0||x[1]!=0) { lol++; if(poz[akt]!=zak[akt][1]) { poz[akt]=zak[akt][1]; x[lol%2]=czyCieplo(poz); if(x[lol%2]==1) { if(zak[akt][2]-zak[akt][1]==1) zak[akt][2]=zak[akt][1]; else zak[akt][2]=(zak[akt][2]+zak[akt][1])/2; } } if(poz[akt]!=zak[akt][2]) { poz[akt]=zak[akt][2]; x[lol%2]=czyCieplo(poz); if(x[lol%2]==1) { if(zak[akt][2]-zak[akt][1]==1) zak[akt][1]=zak[akt][2]; else zak[akt][1]=(zak[akt][2]+zak[akt][1])/2; } } } } int main(){ d=podajD(); r=podajR(); k=podajK(); //for(int i=0;i<d;i++) // cin>>akk[i]; int ile=d; czyCieplo(poz); for(int i=0;i<d;i++) zak[i][2]=r; akt=0; while(ile>0) { niuszka(); licz(); } znalazlem(poz); return 0; } |