Pagini recente »
OJI 2023 Clasa a VI-a - Antrenament - FFA v2.1
|
2015-04-02-test-7b
|
vaslui_cls1112_17.01
|
Borderou de evaluare (job #528061)
|
Cod sursă (job #93771)
Cod sursă (job
#93771)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 500000
int main()
{
char buffer[N];
int i;
int j;
int greedy;
int n;
int echiv;
int stop = 0;
freopen("bart.in", "r", stdin);
freopen("bart.out", "w", stdout);
fgets(buffer, N, stdin);
n = strlen(buffer);
i = 1;
j = 1;
greedy = 0;
while (i < n - 1 && !greedy) {
// printf("i = %d; buffer[%d] = %c; buffer[0] = %c; greedy = %d\n", i, i, buffer[i], buffer[0], greedy);
if (buffer[i] == buffer[0]) {
// printf("entering greedy mode: buffer[%d] == buffer[0] == %c\n", i, buffer[0]);
j = i + 1;
echiv = j % i;
stop = i;
greedy = 1;
while (j < n - 1 && greedy) {
greedy = (buffer[j] == buffer[echiv]);
// printf("j = %d; buffer[j] = %c; buffer[j mod i] = %c\n", j, buffer[j], buffer[j % i]);
// printf("greedy = %d\n", greedy);
echiv = (echiv + 1 < i) ? echiv + 1 : 0;
j++;
}
i = j - 2;
}
// printf("j = %d; i = %d, stop = %d\n", j, i, stop);
i++;
}
if (!greedy)
stop = n;
buffer[stop - (!greedy)] = '\0';
printf("%s\n", buffer);
fclose(stdin);
fclose(stdout);
return 0;
}