#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; } |
English