Submission #70710107


Source Code Expand

Copy
#include <stdio.h>
#include <inttypes.h>
int N, A, B;
char S[312345];
int acnt[312345], bcnt[312345];
int get_first_ge(const int* arr, int target) {
int l = 0, ge = N + 1;
while (l + 1 < ge) {
int m = l + (ge - l) / 2;
if (arr[m] >= target) ge = m; else l = m;
}
return ge;
}
int main(void) {
int i;
uint64_t ans = 0;
if (scanf("%d%d%d", &N, &A, &B) != 3) return 1;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <inttypes.h>

int N, A, B;
char S[312345];

int acnt[312345], bcnt[312345];

int get_first_ge(const int* arr, int target) {
	int l = 0, ge = N + 1;
	while (l + 1 < ge) {
		int m = l + (ge - l) / 2;
		if (arr[m] >= target) ge = m; else l = m;
	}
	return ge;
}

int main(void) {
	int i;
	uint64_t ans = 0;
	if (scanf("%d%d%d", &N, &A, &B) != 3) return 1;
	if (scanf("%312343s", S + 1) != 1) return 1;
	for (i = 1; i <= N; i++) {
		acnt[i] = acnt[i - 1] + (S[i] == 'a');
		bcnt[i] = bcnt[i - 1] + (S[i] == 'b');
	}
	for (i = 0; i < N; i++) {
		int a_ge = get_first_ge(acnt, A + acnt[i]);
		int b_ge = get_first_ge(bcnt, B + bcnt[i]);
		if (a_ge < b_ge) ans += b_ge - a_ge;
	}
	printf("%" PRIu64 "\n", ans);
	return 0;
}

Submission Info

Submission Time
Task C - Truck Driver
User mikecat
Language C23 (GCC 14.2.0)
Score 300
Code Size 779 Byte
Status AC
Exec Time 32 ms
Memory 4400 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 2
AC × 25
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All hand.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, sample_01.txt, sample_02.txt
Case Name Status Exec Time Memory
hand.txt AC 1 ms 1600 KiB
random_01.txt AC 20 ms 4364 KiB
random_02.txt AC 21 ms 4364 KiB
random_03.txt AC 21 ms 4308 KiB
random_04.txt AC 21 ms 4308 KiB
random_05.txt AC 26 ms 4360 KiB
random_06.txt AC 26 ms 4400 KiB
random_07.txt AC 26 ms 4200 KiB
random_08.txt AC 25 ms 4288 KiB
random_09.txt AC 25 ms 4308 KiB
random_10.txt AC 27 ms 4364 KiB
random_11.txt AC 28 ms 4296 KiB
random_12.txt AC 26 ms 4360 KiB
random_13.txt AC 30 ms 4376 KiB
random_14.txt AC 32 ms 4224 KiB
random_15.txt AC 30 ms 4352 KiB
random_16.txt AC 29 ms 4352 KiB
random_17.txt AC 28 ms 4364 KiB
random_18.txt AC 29 ms 4344 KiB
random_19.txt AC 16 ms 4308 KiB
random_20.txt AC 30 ms 4320 KiB
random_21.txt AC 29 ms 4308 KiB
random_22.txt AC 30 ms 4224 KiB
sample_01.txt AC 1 ms 1520 KiB
sample_02.txt AC 1 ms 1688 KiB


2025-11-06 (Thu)
07:40:08 +09:00