#include <stdio.h>
#include <time.h>
#include <algorithm>
#include "cielib.h"
using namespace std;
int d, k, r;
int lewy[500];
int prawy[500];
int znalezione = 0;
int zapytanie[500];
int zapytanie_pre[500];
int zakresL, zakresP;
int kand1, kand2;
int schw1, schw2, schw3;
int odpowiedz[500];
int wykorzystane = 0;
int main()
{
	srand(time(0));
	
	d = podajD();
	k = podajK();
	r = podajR();
	for(int i = 0; i < d; i++) prawy[i] = r;
	
	while(znalezione < d)
	{
		for(int i = 0; i < d; i++)
		{
			zapytanie[i] = (lewy[i]+prawy[i])/2;
			zapytanie_pre[i] = (lewy[i]+prawy[i])/2;
		}
		for(int i = 0; i < d; i++)
		{
			if(lewy[i] == prawy[i]) continue;
			
			zakresL = lewy[i];
			zakresP = prawy[i];
			
			kand1 = ((abs(rand()*rand()))%(zakresP-zakresL+1))+zakresL;
			kand2 = ((abs(rand()*rand()*rand()))%(zakresP-zakresL+1))+zakresL;
			if(kand1 == kand2) continue;
			
			if(kand1 > kand2) swap(kand1, kand2);
	
			zapytanie[i] = kand1;
			schw1 = czyCieplo(zapytanie);
			wykorzystane++;
			
			zapytanie[i] = kand2;
			schw2 = czyCieplo(zapytanie);
			wykorzystane++;
			
			zapytanie[i] = kand1;
			schw3 = czyCieplo(zapytanie);
			wykorzystane++;
			
			if(schw2 == 1) zakresL = kand1;
			else if(schw3 == 1) zakresP = kand2;
			else
			{
				zapytanie[i] = zakresL;
				schw1 = czyCieplo(zapytanie);
				wykorzystane++;
				
				zapytanie[i] = zakresP;
				schw2 = czyCieplo(zapytanie);
				wykorzystane++;
				
				zapytanie[i] = zakresL;
				schw3 = czyCieplo(zapytanie);
				wykorzystane++;
				
				if(schw2 == 1) zakresL += 1;
				else if(schw3 == 1) zakresP -= 1;
			}
			zapytanie[i] = zapytanie_pre[i];
			lewy[i] = zakresL;
			prawy[i] = zakresP;
			if(zakresL == zakresP)
			{
				lewy[i] = zakresL;
				prawy[i] = zakresP;
				znalezione++;
			}
	
			if(wykorzystane+6 >= k) break;
		}
		
		if(wykorzystane+6 >= k) break;
	}
	
	for(int i = 0; i < d; i++)
	{
		if(prawy[i]-lewy[i] == 1 && prawy[i] == r) odpowiedz[i] = r;
		else odpowiedz[i] = (lewy[i]+prawy[i])/2;
	}
	
	znalazlem(odpowiedz);
	
	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 | #include <stdio.h> #include <time.h> #include <algorithm> #include "cielib.h" using namespace std; int d, k, r; int lewy[500]; int prawy[500]; int znalezione = 0; int zapytanie[500]; int zapytanie_pre[500]; int zakresL, zakresP; int kand1, kand2; int schw1, schw2, schw3; int odpowiedz[500]; int wykorzystane = 0; int main() { srand(time(0)); d = podajD(); k = podajK(); r = podajR(); for(int i = 0; i < d; i++) prawy[i] = r; while(znalezione < d) { for(int i = 0; i < d; i++) { zapytanie[i] = (lewy[i]+prawy[i])/2; zapytanie_pre[i] = (lewy[i]+prawy[i])/2; } for(int i = 0; i < d; i++) { if(lewy[i] == prawy[i]) continue; zakresL = lewy[i]; zakresP = prawy[i]; kand1 = ((abs(rand()*rand()))%(zakresP-zakresL+1))+zakresL; kand2 = ((abs(rand()*rand()*rand()))%(zakresP-zakresL+1))+zakresL; if(kand1 == kand2) continue; if(kand1 > kand2) swap(kand1, kand2); zapytanie[i] = kand1; schw1 = czyCieplo(zapytanie); wykorzystane++; zapytanie[i] = kand2; schw2 = czyCieplo(zapytanie); wykorzystane++; zapytanie[i] = kand1; schw3 = czyCieplo(zapytanie); wykorzystane++; if(schw2 == 1) zakresL = kand1; else if(schw3 == 1) zakresP = kand2; else { zapytanie[i] = zakresL; schw1 = czyCieplo(zapytanie); wykorzystane++; zapytanie[i] = zakresP; schw2 = czyCieplo(zapytanie); wykorzystane++; zapytanie[i] = zakresL; schw3 = czyCieplo(zapytanie); wykorzystane++; if(schw2 == 1) zakresL += 1; else if(schw3 == 1) zakresP -= 1; } zapytanie[i] = zapytanie_pre[i]; lewy[i] = zakresL; prawy[i] = zakresP; if(zakresL == zakresP) { lewy[i] = zakresL; prawy[i] = zakresP; znalezione++; } if(wykorzystane+6 >= k) break; } if(wykorzystane+6 >= k) break; } for(int i = 0; i < d; i++) { if(prawy[i]-lewy[i] == 1 && prawy[i] == r) odpowiedz[i] = r; else odpowiedz[i] = (lewy[i]+prawy[i])/2; } znalazlem(odpowiedz); return 0; } | 
 
            
         English
                    English