Pagini recente »
pregatire_sector_clasa_a_vii-a_runda_2
|
Cod sursă (job #93395)
Cod sursă (job
#93395)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 500000
int main()
{
char buffer[N];
int i = 0;
int j;
int greedy;
int n;
int echiv;
int stop;
freopen("bart.in", "r", stdin);
freopen("bart.out", "w", stdout);
fgets(buffer, N, stdin);
n = strlen(buffer);
i = 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;
stop = i;
echiv = j % i;
greedy = 1;
while (greedy && 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);
j++;
echiv = (echiv + 1 < i) ? echiv + 1 : 0;
}
}
if (greedy)
i = j;
i++;
}
if (!greedy)
stop = n;
buffer[stop - (!greedy)] = '\0';
printf("%s\n", buffer);
fclose(stdin);
fclose(stdout);
return 0;
}