// Ciepło-zimno [B].cpp : Defines the entry point for the console application.
//
#include <cstdio>
#include "cielib.h"
#define MAX_D 500
struct przedzial {
	int p, k;
};
void solutionThree(int d, int *ans,przedzial *przed) //r==3
{
	for (int i = 0; i < d; ++i)
	{
		if (przed[i].k - przed[i].p + 1 < 3)
		{
			if (przed[i].p == 0)przed[i].k+=1;
			else przed[i].p--;
		}
	}
	for (int i = 0; i < d; ++i) {
		ans[i] = (przed[i].p + przed[i].k) / 2;
	}
	czyCieplo(ans);
	for (int i = 0; i < d; ++i)
	{
		czyCieplo(ans);
		ans[i] = przed[i].p;
		if (!czyCieplo(ans))
		{
			ans[i] = przed[i].k;
			if (!czyCieplo(ans))
			{
				ans[i] = przed[i].p;
				if (!czyCieplo(ans))
					ans[i] = (przed[i].k + przed[i].p) / 2;
			}
		}
	}
}
void solution(int d,int r,int *ans)
{
	przedzial przed[MAX_D];
	for (int i = 0; i < d; ++i)
	{
		ans[i] = r / 2;
		przed[i].p = 0;
		przed[i].k = r;
	}
	if (r == 2)
	{
		solutionThree(d, ans,przed);
		return;
	}
	czyCieplo(ans);
	bool moreThree = true;
	while (moreThree) {
		
		moreThree = false;
		for (int i = 0; i < d; ++i)
		{
			int sr = (przed[i].k + przed[i].p )/2;
			if (przed[i].k-przed[i].p+1 > 3)
			{
				moreThree = true;
				ans[i] = sr;
				czyCieplo(ans);
				ans[i] = przed[i].k;
				
				if(czyCieplo(ans))
				{
					przed[i].p = sr;
					
				}
				else
				{
					ans[i] = przed[i].p;
					if(czyCieplo(ans))
					{
						przed[i].k = sr;
						if ((przed[i].k + przed[i].p) % 2 == 0)przed[i].k++;
					}else
					{
						przed[i].p = sr;
					}
				}
				ans[i] = (przed[i].k+przed[i].p)/2;
			}
		}
	}
	solutionThree(d, ans,przed);
}
int main()
{
	int ans[MAX_D];
	int d,r,k;
	
	d=podajD();
	r = podajR();
	k = podajK();
	solution(d, r, ans);
	znalazlem(ans);
	//return 0;
	/*while (true)
	{
		nextTest();
		d = podajD();
		r = podajR();
		k = podajK();
		solution(d, r, ans);
	
		znalazlem(ans);
	}*/
	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 | // Ciepło-zimno [B].cpp : Defines the entry point for the console application. // #include <cstdio> #include "cielib.h" #define MAX_D 500 struct przedzial { int p, k; }; void solutionThree(int d, int *ans,przedzial *przed) //r==3 { for (int i = 0; i < d; ++i) { if (przed[i].k - przed[i].p + 1 < 3) { if (przed[i].p == 0)przed[i].k+=1; else przed[i].p--; } } for (int i = 0; i < d; ++i) { ans[i] = (przed[i].p + przed[i].k) / 2; } czyCieplo(ans); for (int i = 0; i < d; ++i) { czyCieplo(ans); ans[i] = przed[i].p; if (!czyCieplo(ans)) { ans[i] = przed[i].k; if (!czyCieplo(ans)) { ans[i] = przed[i].p; if (!czyCieplo(ans)) ans[i] = (przed[i].k + przed[i].p) / 2; } } } } void solution(int d,int r,int *ans) { przedzial przed[MAX_D]; for (int i = 0; i < d; ++i) { ans[i] = r / 2; przed[i].p = 0; przed[i].k = r; } if (r == 2) { solutionThree(d, ans,przed); return; } czyCieplo(ans); bool moreThree = true; while (moreThree) { moreThree = false; for (int i = 0; i < d; ++i) { int sr = (przed[i].k + przed[i].p )/2; if (przed[i].k-przed[i].p+1 > 3) { moreThree = true; ans[i] = sr; czyCieplo(ans); ans[i] = przed[i].k; if(czyCieplo(ans)) { przed[i].p = sr; } else { ans[i] = przed[i].p; if(czyCieplo(ans)) { przed[i].k = sr; if ((przed[i].k + przed[i].p) % 2 == 0)przed[i].k++; }else { przed[i].p = sr; } } ans[i] = (przed[i].k+przed[i].p)/2; } } } solutionThree(d, ans,przed); } int main() { int ans[MAX_D]; int d,r,k; d=podajD(); r = podajR(); k = podajK(); solution(d, r, ans); znalazlem(ans); //return 0; /*while (true) { nextTest(); d = podajD(); r = podajR(); k = podajK(); solution(d, r, ans); znalazlem(ans); }*/ return 0; } | 
 
            
         English
                    English