25012023-01-14 10:28:39peterVideójátékcpp17Hibás válasz 0/10056ms7340 KiB
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>

int off() {
	int T, myBreaks, HanoBreaks;
	scanf("%d", &T);
	scanf("%d", &myBreaks);
	int** AB = (int**)malloc(sizeof(int*) * myBreaks);
	for (int i = 0; i < myBreaks; i++)
	{
		AB[i] = (int*)malloc(sizeof(int) * 2);
		scanf("%d%d", &AB[i][0], &AB[i][1]);
	}
	scanf("%d", &HanoBreaks);
	int** XY = (int**)malloc(sizeof(int*) * HanoBreaks);
	for (int i = 0; i < HanoBreaks; i++)
	{
		XY[i] = (int*)malloc(sizeof(int) * 2);
		scanf("%d%d", &XY[i][0], &XY[i][1]);
	}

	
	int* start = (int*)malloc(sizeof(int) * (myBreaks + HanoBreaks));
	int* end = (int*)malloc(sizeof(int) * (myBreaks + HanoBreaks));
	int a = 0, b = 0, c = 0;
	for (int i = 0; i < myBreaks + HanoBreaks; i++)
	{
		if (a >= myBreaks)
		{
			start[c] = XY[b][0];
			c++;
			b++;
			continue;
		}
		if (b >= HanoBreaks)
		{
			start[c] = AB[a][0];
			c++;
			a++;
			continue;
		}
		if (AB[a][0] <= XY[b][0])
		{
			start[c] = AB[a][0];
			c++;
			a++;
			continue;
		}
		start[c] = XY[b][0];
		c++;
		b++;
	}
	a = 0; b = 0; c = 0;
	for (int i = 0; i < myBreaks + HanoBreaks; i++)
	{
		if (a >= myBreaks)
		{
			end[c] = XY[b][1];
			c++;
			b++;
			continue;
		}
		if (b >= HanoBreaks)
		{
			end[c] = AB[a][1];
			c++;
			a++;
			continue;
		}
		if (AB[a][1] <= XY[b][1])
		{
			end[c] = AB[a][1];
			c++;
			a++;
			continue;
		}
		end[c] = XY[b][1];
		c++;
		b++;
	}


	int s = 0, e = 0;
	int kozos = 0;
	for (int i = 0; i < (myBreaks + HanoBreaks) * 2; i++)
	{
		if (start[s] <= end[e])
		{
			s++;
		}
		else
		{
			e++;
			int interval = end[e - 1] - start[s - 1] + 1;
			if (interval > 0)
			{
				kozos += interval;
			}
		}
		
	}

	printf("%d", kozos);





	for (int i = 0; i < myBreaks; i++)
	{
		free(AB[i]);
	}
	for (int i = 0; i < HanoBreaks; i++)
	{
		free(XY[i]);
	}
	free(AB);
	free(XY);
	free(start);
	free(end);
	return 0;
}

int main() {
	int T, myBreaks, HanoBreaks;
	scanf("%d", &T);
	scanf("%d", &myBreaks);
	int* AB = (int*)malloc(sizeof(int) * myBreaks * 2);
	for (int i = 0; i < myBreaks * 2; i += 2)
	{
		scanf("%d%d", &AB[i], &AB[i + 1]);
	}
	scanf("%d", &HanoBreaks);
	int* XY = (int*)malloc(sizeof(int) * HanoBreaks * 2);
	for (int i = 0; i < HanoBreaks * 2; i += 2)
	{
		scanf("%d%d", &XY[i], &XY[i + 1]);
	}


	int a = 0, b = 0, kozos = 0;
	while (a < myBreaks * 2 && b < HanoBreaks * 2)
	{
		if (XY[b] - AB[a] > T)
		{
			a += 2;
			continue;
		}
		if (AB[a] <= XY[b] && AB[a + 1] >= XY[b])
		{
			if (XY[b + 1] < AB[a + 1])
			{
				kozos += XY[b + 1] - XY[b] + 1;
				b += 2;
				continue;
			}
			kozos += AB[a + 1] - XY[b] + 1;
		}
		if (AB[a] <= XY[b + 1])
		{
			if (AB[a + 1] < XY[b + 1])
			{
				kozos += AB[a + 1] - AB[a] + 1;
				a += 2;
				continue;
			}
			kozos += XY[b + 1] - AB[a] + 1;
		}
		a += 2;
	}

	printf("%d", kozos);
	free(AB);
	free(XY);
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1424 KiB
2Elfogadva2ms1572 KiB
subtask20/10
3Elfogadva2ms1712 KiB
4Elfogadva2ms1912 KiB
5Hibás válasz2ms2116 KiB
6Elfogadva2ms2308 KiB
7Elfogadva2ms2572 KiB
8Elfogadva2ms2704 KiB
9Elfogadva2ms2812 KiB
10Elfogadva2ms2720 KiB
11Hibás válasz2ms2752 KiB
subtask30/20
12Hibás válasz2ms2904 KiB
13Hibás válasz2ms2988 KiB
14Hibás válasz2ms3220 KiB
15Hibás válasz2ms3392 KiB
16Hibás válasz2ms3360 KiB
17Hibás válasz2ms3452 KiB
18Hibás válasz2ms3576 KiB
19Hibás válasz2ms3396 KiB
20Hibás válasz2ms3324 KiB
21Hibás válasz2ms3340 KiB
22Hibás válasz2ms3364 KiB
subtask40/30
23Hibás válasz6ms3580 KiB
24Hibás válasz17ms4172 KiB
25Hibás válasz43ms5728 KiB
26Hibás válasz46ms6400 KiB
27Hibás válasz46ms6256 KiB
28Hibás válasz18ms4428 KiB
29Hibás válasz4ms3868 KiB
30Hibás válasz4ms4216 KiB
31Hibás válasz3ms4020 KiB
subtask50/40
32Hibás válasz7ms4220 KiB
33Hibás válasz19ms4820 KiB
34Hibás válasz37ms5960 KiB
35Hibás válasz50ms6580 KiB
36Hibás válasz56ms7108 KiB
37Hibás válasz56ms7340 KiB
38Hibás válasz32ms6132 KiB
39Hibás válasz37ms6684 KiB
40Hibás válasz10ms4648 KiB
41Hibás válasz16ms5052 KiB