#include <cstdio>
#include <cmath>
#include <stdlib.h>
#include "cielib.h"
#include <iostream>
using namespace std;
int main()
{
    int d,k,r;
    char przer;
    int entek[501];
    int entekrog[501];
    int maxentek[501];
    int minentek[501];
    int tmp_entek;
    d=podajD();
    k=podajK();
    r=podajR();
    int ktora_zla=-1;
    int zla_losowana;
    //const int krotka[501]={1122,1312,1774};
    int if_koniec=1;
    int if_sym=1;
    for(int i=0;i<d;i++)
    {
        entek[i]=0;
        entekrog[i]=0; //0 - dodajemy do wsp
        maxentek[i]=r;
        minentek[i]=0;
    }
    czyCieplo(entek);
    for(;;)
    {
        ktora_zla=-1;
        for(int i=0;i<d;i++)
        {
            if(entekrog[i]==0)
            {
                entek[i]+=1;
                if(czyCieplo(entek)==1)
                {
                    ktora_zla=i;
                }
                entek[i]-=1;
                czyCieplo(entek);
            }
            if(entekrog[i]==1)
            {
                entek[i]-=1;
                if(czyCieplo(entek)==1)
                {
                    ktora_zla=i;
                }
                entek[i]+=1;
                czyCieplo(entek);
            }
        }
        if(ktora_zla==-1)
        {
            if_koniec=1;
            for(int i=0;i<d;i++)
            {
                if(maxentek[i]-minentek[i]!=0)
                {
                    if_koniec=0;
                    break;
                }
            }
            if(if_koniec==1)
            {
                znalazlem(entek);
                break;
            }else{
                for(int i=0;i<d;i++)
                {
                    if(entekrog[i]==0)
                    {
                        entek[i]=maxentek[i];
                        entekrog[i]=1;
                        if(czyCieplo(entek)==1)
                        {
                            if_sym=0;
                            minentek[i]=(maxentek[i]+minentek[i])/2;
                            break;
                        }
                    }else{
                        entek[i]=minentek[i];
                        entekrog[i]=0;
                        if(czyCieplo(entek)==1)
                        {
                            if_sym=0;
                            maxentek[i]=ceil(double((maxentek[i]+minentek[i]))/2);
                            break;
                        }
                    }
                }
                if(if_sym==1)
                {
                    for(int i=0;i<d;i++)
                    {
                        //printf("i: %d maxentek: %d minentek: %d rog: %d entek: %d\n",i,maxentek[i],minentek[i],entekrog[i],entek[i]);
                        if(maxentek[i]-minentek[i]!=0)
                        {
                            if(entekrog[i]==0)
                            {
                                entek[i]++;
                                minentek[i]++;
                            }else{
                                entek[i]--;
                                maxentek[i]--;
                            }
                        }
                    }
                }
            }
        }else{
            //printf("Zla: %d Rog: %d\n",ktora_zla,entekrog[ktora_zla]);
            if(entekrog[ktora_zla]==0)
            {
                tmp_entek=entek[ktora_zla];
                entek[ktora_zla]=maxentek[ktora_zla];
                if(czyCieplo(entek)==0)
                {
                    //printf("Zimno %d\n",entek[ktora_zla]);
                    entek[ktora_zla]=tmp_entek;
                    czyCieplo(entek);
                    maxentek[ktora_zla]=ceil(double((maxentek[ktora_zla]+minentek[ktora_zla]))/2);
                    //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]);
                }else{
                    //printf("Cieplo %d\n",entek[ktora_zla]);
                    minentek[ktora_zla]=(maxentek[ktora_zla]+minentek[ktora_zla])/2;
                    entekrog[ktora_zla]=1;
                    //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]);
                }
            }else{
                tmp_entek=entek[ktora_zla];
                entek[ktora_zla]=minentek[ktora_zla];
                if(czyCieplo(entek)==0)
                {
                    //printf("Zimno %d\n",entek[ktora_zla]);
                    entek[ktora_zla]=tmp_entek;
                    czyCieplo(entek);
                    minentek[ktora_zla]=(maxentek[ktora_zla]+minentek[ktora_zla])/2;
                    //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]);
                }else{
                    //printf("Cieplo %d\n",entek[ktora_zla]);
                    maxentek[ktora_zla]=ceil(double((maxentek[ktora_zla]+minentek[ktora_zla]))/2);
                    entekrog[ktora_zla]=0;
                    //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]);
                }
            }
        }
        //scanf("%c",&przer);
        /*for(int i=0;i<d;i++)
            printf("%d ",entek[i]);
        printf("\n");*/
    }
}
        | 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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | #include <cstdio> #include <cmath> #include <stdlib.h> #include "cielib.h" #include <iostream> using namespace std; int main() { int d,k,r; char przer; int entek[501]; int entekrog[501]; int maxentek[501]; int minentek[501]; int tmp_entek; d=podajD(); k=podajK(); r=podajR(); int ktora_zla=-1; int zla_losowana; //const int krotka[501]={1122,1312,1774}; int if_koniec=1; int if_sym=1; for(int i=0;i<d;i++) { entek[i]=0; entekrog[i]=0; //0 - dodajemy do wsp maxentek[i]=r; minentek[i]=0; } czyCieplo(entek); for(;;) { ktora_zla=-1; for(int i=0;i<d;i++) { if(entekrog[i]==0) { entek[i]+=1; if(czyCieplo(entek)==1) { ktora_zla=i; } entek[i]-=1; czyCieplo(entek); } if(entekrog[i]==1) { entek[i]-=1; if(czyCieplo(entek)==1) { ktora_zla=i; } entek[i]+=1; czyCieplo(entek); } } if(ktora_zla==-1) { if_koniec=1; for(int i=0;i<d;i++) { if(maxentek[i]-minentek[i]!=0) { if_koniec=0; break; } } if(if_koniec==1) { znalazlem(entek); break; }else{ for(int i=0;i<d;i++) { if(entekrog[i]==0) { entek[i]=maxentek[i]; entekrog[i]=1; if(czyCieplo(entek)==1) { if_sym=0; minentek[i]=(maxentek[i]+minentek[i])/2; break; } }else{ entek[i]=minentek[i]; entekrog[i]=0; if(czyCieplo(entek)==1) { if_sym=0; maxentek[i]=ceil(double((maxentek[i]+minentek[i]))/2); break; } } } if(if_sym==1) { for(int i=0;i<d;i++) { //printf("i: %d maxentek: %d minentek: %d rog: %d entek: %d\n",i,maxentek[i],minentek[i],entekrog[i],entek[i]); if(maxentek[i]-minentek[i]!=0) { if(entekrog[i]==0) { entek[i]++; minentek[i]++; }else{ entek[i]--; maxentek[i]--; } } } } } }else{ //printf("Zla: %d Rog: %d\n",ktora_zla,entekrog[ktora_zla]); if(entekrog[ktora_zla]==0) { tmp_entek=entek[ktora_zla]; entek[ktora_zla]=maxentek[ktora_zla]; if(czyCieplo(entek)==0) { //printf("Zimno %d\n",entek[ktora_zla]); entek[ktora_zla]=tmp_entek; czyCieplo(entek); maxentek[ktora_zla]=ceil(double((maxentek[ktora_zla]+minentek[ktora_zla]))/2); //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]); }else{ //printf("Cieplo %d\n",entek[ktora_zla]); minentek[ktora_zla]=(maxentek[ktora_zla]+minentek[ktora_zla])/2; entekrog[ktora_zla]=1; //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]); } }else{ tmp_entek=entek[ktora_zla]; entek[ktora_zla]=minentek[ktora_zla]; if(czyCieplo(entek)==0) { //printf("Zimno %d\n",entek[ktora_zla]); entek[ktora_zla]=tmp_entek; czyCieplo(entek); minentek[ktora_zla]=(maxentek[ktora_zla]+minentek[ktora_zla])/2; //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]); }else{ //printf("Cieplo %d\n",entek[ktora_zla]); maxentek[ktora_zla]=ceil(double((maxentek[ktora_zla]+minentek[ktora_zla]))/2); entekrog[ktora_zla]=0; //printf("Minentek: %d Maxentek: %d\n",minentek[ktora_zla],maxentek[ktora_zla]); } } } //scanf("%c",&przer); /*for(int i=0;i<d;i++) printf("%d ",entek[i]); printf("\n");*/ } } | 
 
            
         English
                    English