CSES - Datatähti 2019 alku - Results
Submission details
Task:Leimasin
Sender:patamaski
Submission time:2018-10-12 14:39:25 +0300
Language:C++
Status:READY
Result:29
Feedback
groupverdictscore
#1ACCEPTED29
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.02 s1details
#3ACCEPTED0.02 s1details
#4ACCEPTED0.02 s1details
#5ACCEPTED0.02 s1details
#6ACCEPTED0.02 s1details
#7ACCEPTED0.02 s1details
#8ACCEPTED0.02 s1details
#9ACCEPTED0.01 s1details
#10ACCEPTED0.02 s1details
#11ACCEPTED0.01 s1details
#12ACCEPTED0.03 s1details
#13ACCEPTED0.01 s1details
#14ACCEPTED0.02 s1details
#15ACCEPTED0.02 s2details
#160.01 s2details
#170.02 s2details
#18ACCEPTED0.02 s2details
#19ACCEPTED0.02 s2details
#20ACCEPTED0.02 s2details
#210.02 s2details
#22ACCEPTED0.03 s2details
#23ACCEPTED0.02 s2details
#24ACCEPTED0.01 s2details
#25ACCEPTED0.02 s2details
#26ACCEPTED0.02 s2details
#27ACCEPTED0.02 s2details
#28ACCEPTED0.01 s2details
#29ACCEPTED0.03 s3details
#300.02 s3details
#310.03 s3details
#320.01 s3details
#330.02 s3details
#340.04 s3details
#350.01 s3details
#360.02 s3details
#37ACCEPTED0.03 s3details
#38ACCEPTED0.02 s3details
#39ACCEPTED0.02 s3details
#40ACCEPTED0.01 s3details
#41ACCEPTED0.03 s3details
#42ACCEPTED0.02 s3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:99:6: warning: variable 'kohta' set but not used [-Wunused-but-set-variable]
  int kohta = 0;
      ^~~~~
input/code.cpp:184:6: warning: variable 'ekaleimasin' set but not used [-Wunused-but-set-variable]
  int ekaleimasin = 0, vikaleimasin = 0;
      ^~~~~~~~~~~
input/code.cpp:184:23: warning: variable 'vikaleimasin' set but not used [-Wunused-but-set-variable]
  int ekaleimasin = 0, vikaleimasin = 0;
                       ^~~~~~~~~~~~
input/code.cpp:527:6: warning: variable 'erotukset' set but not used [-Wunused-but-set-variable]
  int erotukset[lopputulos + lopputulosb + leimasimia];
      ^~~~~~~~~

Code

#include <bits/stdc++.h>
using namespace std;
//merge, kopioitu netistä
void merge(int arr[], int l, int m, int r)
{
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
/* create temp arrays */
int L[n1], R[n2];
/* Copy data to temp arrays L[] and R[] */
for (i = 0; i < n1; i++)
L[i] = arr[l + i];
for (j = 0; j < n2; j++)
R[j] = arr[m + 1+ j];
/* Merge the temp arrays back into arr[l..r]*/
i = 0; // Initial index of first subarray
j = 0; // Initial index of second subarray
k = l; // Initial index of merged subarray
while (i < n1 && j < n2)
{
if (L[i] <= R[j])
{
arr[k] = L[i];
i++;
}
else
{
arr[k] = R[j];
j++;
}
k++;
}
/* Copy the remaining elements of L[], if there
are any */
while (i < n1)
{
arr[k] = L[i];
i++;
k++;
}
/* Copy the remaining elements of R[], if there
are any */
while (j < n2)
{
arr[k] = R[j];
j++;
k++;
}
}
/* l is for left index and r is right index of the
sub-array of arr to be sorted */
void mergeSort(int arr[], int l, int r)
{
if (l < r)
{
// Same as (l+r)/2, but avoids overflow for
// large l and h
int m = l+(r-l)/2;
// Sort first and second halves
mergeSort(arr, l, m);
mergeSort(arr, m+1, r);
merge(arr, l, m, r);
}
}
/* UTILITY FUNCTIONS */
/* Function to print an array */
void printArray(int A[], int size)
{
int i;
for (i=0; i < size; i++)
printf("%d ", A[i]);
printf("\n");
}
//...
// a=leimasimen kohta
// b=monesko leimasin
// c=leimasin
// d=jono
//int taakse(const int a, const int b, const string c, const string d){
// return 0;
//}
int main(){
bool mahdotonko = 0;
int mahdoton = -1;
int kohta = 0;
string jonor,leimasinr;
cin >> jonor >> leimasinr;
int jononpit = jonor.length();
int leimasinpit = leimasinr.length();
char jono[jononpit];
char leimasin[leimasinpit];
// cout << jononpit << " " << leimasinpit << "\n";
for (int i=0;i<jononpit;i++){
jono[i] = jonor.at(i);
}
for (int i=0;i<leimasinpit;i++){
leimasin[i] = leimasinr.at(i);
}
// cout << jono[0] << " " << leimasin[leimasinpit-1] << "\n";
int alkuyhteiset = 0;
bool testi = 0;
for (int i=0;testi == 0;i++){
if (jono[i] == leimasin[0]){
alkuyhteiset++;
}
else {
testi = 1;
}
}
// cout << alkuyhteiset << " " << testi << "\n";
int alkutoistoleimasin = 1;
bool tarkistus = 0;
for (int i=0;tarkistus == 0;i++){
if (i < leimasinpit){
if (leimasin[i] == leimasin[i+1]){
alkutoistoleimasin++;
}
else{
tarkistus = 1;
}
}
else{
tarkistus = 1;
}
}
// cout << alkutoistoleimasin << " " << tarkistus << "\n";
if (alkuyhteiset < alkutoistoleimasin){
cout << mahdoton << "\n";
mahdotonko = 1;
}
else if (jonor.find(leimasinr) == string::npos){
cout << mahdoton << "\n";
mahdotonko = 1;
// Löytyikö leimasinta jonosta ollenkaan?
}
// cout << jonor.find(leimasinr) << " \n";
kohta = alkuyhteiset - alkutoistoleimasin;
// if (mahdotonko==0 && jono[alkuyhteiset] != leimasin[alkutoistoleimasin]){
// cout << mahdoton << "\n";
// mahdotonko = 1;
// }
// if (mahdotonko==0 && kohta > 0){
// for (int i=0;i<kohta;i++){
// cout << i+1 << " ";
// }
// cout << "\n";
// }
// cout << kohta << "\n";
int ekaleimasin = 0, vikaleimasin = 0;
int leimasimet[jononpit+1];
int leimasimia =0; //montako löytyy
int havaittu = -1;
for (int i=0;i<jononpit+1;i++){
leimasimet[i]=-4;
}
if (mahdotonko==0){
ekaleimasin = jonor.find(leimasinr);
vikaleimasin = jonor.rfind(leimasinr);
for (int i = 1;leimasimet[i-1]!=-1; i++)
{
leimasimet[i] = jonor.find(leimasinr,havaittu+1);
havaittu = leimasimet[i];
}
for (int i = 0; i < jononpit+1; i++)
{
if (leimasimet[i]>-1){
leimasimia++;
}
}
}
// for (int i=0;i<jononpit;i++){
// cout << leimasimet[i] << " ";
// }
// cout << leimasimia << " \n";
// cout << ekaleimasin << " " << vikaleimasin << "\n";
// int eka = ekaleimasin;
// int edennee = jononpit + 5;
// int paikat[leimasimia][jononpit]; //leimattavat kohdat
bool koe = 1;
// int merkit;
// bool kohdat[leimasinpit];
int tarkatkohdat[leimasinpit];
int kohtia = 0;
// int mikakohta = -1;
int ktalteen = -3;
int poistettu = 0;
int montakotehty = 0;
int paikat2[jononpit];
int matka[jononpit];
int talletus[jononpit];
// for (int i=0;i<leimasimia;i++){
// for (int j = 0; j < jononpit; j++)
// {
// paikat[i][j]=-5;
// }
// }
for (int i = 0; i < jononpit; ++i)
{
paikat2[i] = -5;
matka[i] = 0;
talletus[i] = 0;
}
for (int i = 1; i < leimasimia; ++i)
{
matka[i] = leimasimet[i+1]-leimasimet[i];
}
matka[0]=leimasimet[1]+leimasinpit;
// 1
// for (int i = 1; i < leimasimia+1; i++)
// {
// eka = leimasimet[i];
// edennee = leimasimet[i];
// Etsii leimasimien alkuosia kohta kerrallaan
// for (int j = leimasimet[i]; j > 0; j--)
// {
// Etsii leimasimesta kaikki merkit jotka ovat samat kohdan edellisen merkin kanssa
// for (int k = 0; k < leimasinpit; k++)
// {
// if (jono[leimasimet[i]-1] == leimasin[k]){
// kohdat[k] = 0;
// kohtia++;
// }
// else {
// kohdat[k] = 1;
// }
// }
// Testaa sopiiko jokainen merkki jonoon jossakin kohdassa
// for (int k = 0; k < leimasinpit; k++)
// {
// if (kohdat[k]==0){
// for (int l = 0; l < k; l++)
// {
// Jos jokin merkki erisuuri, siirrytään seuraavaan leimasimen kohtaan
// if (leimasin[l] != jono[leimasimet[i]-l-1]){
// koe = 0;
// break;
// }
// }
// Jos koe == 1, niin kaikki merkit käy, jolloin ei tarvitse käydä muita leimasimen kohtia
// if (koe == 1){
// mikakohta = k;
// break;
// }
// }
// }
// Jos mikakohta ei muuttunut, ei löydy tapaa laittaa leimasinta
// if (mikakohta < 0){
// Jos eka - kohta > 0, jää jokin kirjain leimaamatta
// if (eka - kohta > 0){
// cout << mahdoton << "\n";
// mahdotonko = 1;
// }
// }
// paikat[monesko leimasin][???]
// else {
// paikat[i][mikakohta];
// }
// merkit = leimasinr.find()
// }
// }
// Etsi jonosta löytyvän leimasimen edestä leimasimen alkuosia
// for (int i=0; (edennee !=0) && (eka - kohta > 0); i++ ){
// Testaa sopiiko jokainen merkki jonoon
// for (int j=0; j < leimasinr.find(jono[eka-1]); j++){
// if(jono[eka-1-j] != leimasin[leimasinr.find(jono[eka-1])-j]){
// koe = 0;
// }
// }
// Jos sopii
// if (koe == 1){
// eka -= (leimasinr.find(jono[eka-1]) + 1);
// paikat[i] = eka;
// }
// edennee--;
// }
// 1. Etsi [seuraava] leimasin
for (int i = 1; i < leimasimia+1; i++)
{
poistettu = 0;
koe = 1;
// 2. Etsi [seuraava] pätkä jonosta
for (int j = 0; j < jononpit; j++)
{
// 3. Etsi [seuraava] oikea kirjain leimasimesta
koe = 1;
kohtia = 0;
// 3.1. Etsi kaikki paikat, joissa oikea kirjain leimasimessa
for (int k = 0; k < leimasinpit; k++)
{
if (jono[leimasimet[i]-1-poistettu] == leimasin[k]){
// kohdat[k] = 0;
kohtia++;
tarkatkohdat[kohtia] = k;
// cout << i << " " << k << " " << kohtia << " \n";
// cout << tarkatkohdat[1] << "\n";
// for(int z=0;z<kohtia;z++){cout<<tarkatkohdat[z+1]<<" t "<<i<<" "<<j<<"\n";}
}
// else {
// kohdat[k] = 1;
// }
}
// 3.2. Varsinainen etsiminen
if (kohtia != 0){
for (int k = 1; k < kohtia+1; k++)
{
// 4. Etsi leimasimen kirjainta edeltävä pätkä jonon oikeasta kohdasta
// cout << tarkatkohdat[k] << " " << leimasimet[i] << " " << i << " " << j << " " << k << "\n";
for (int l = 1; l < min(tarkatkohdat[k]+1,leimasimet[i])+1; l++)
{
if (jono[leimasimet[i]-l-poistettu] != leimasin[tarkatkohdat[k]-l+1])
{
koe = 0;
break;
}
}
if (koe == 1){
ktalteen = k;
break;
}
}
}
else break;
if (koe == 1){
// paikat[i-1][j] = leimasimet[i]-tarkatkohdat[ktalteen]-poistettu;
if (j < matka[i-1]-leimasinpit+1){
paikat2[montakotehty] = leimasimet[i]-tarkatkohdat[ktalteen]-poistettu;
montakotehty++;
talletus[i-1]++;
}
poistettu += tarkatkohdat[ktalteen] + 1;
}
// if (koe == 1)
// {
// if (j < matka[i-1]-leimasinpit+1)
// {
// paikat2[montakotehty] = leimasimet[i]-tarkatkohdat[ktalteen]-poistettu;
// montakotehty++;
// }
// }
else break;
}
}
bool koeb = 1;
// bool kohdatb[leimasinpit];
int tarkatkohdatb[leimasinpit];
int kohtiab = 0;
int ktalteenb = -3;
int poistettub = 0;
int montakotehtyb = 0;
int paikat2b[jononpit];
int matkab[jononpit];
int talletusb[jononpit];
for (int i = 0; i < jononpit; ++i)
{
paikat2b[i] = -5;
matkab[i] = 0;
talletusb[i] = 0;
}
for (int i = leimasimia-2; i > -1; i--)
{
matkab[i] = leimasimet[i+2]-leimasimet[i+1];
}
matkab[leimasimia-1]=jononpit-leimasimet[leimasimia];
for (int i = leimasimia; i > 0; i--){
poistettub = 0;
koeb = 1;
for (int j = 0; j < jononpit; j++){
koeb = 1;
kohtiab = 0;
for (int k = 0; k < leimasinpit; k++)
{
if (jono[leimasimet[i]+leimasinpit+poistettub] == leimasin[leimasinpit-k-1]){
// kohdatb[k] = 0;
kohtiab++;
tarkatkohdatb[kohtiab] = k;}
// else {
// kohdatb[k] = 1;}
}
if (kohtiab != 0){
for (int k = 1; k < kohtiab+1; k++)
{
// cout << tarkatkohdatb[k] << " " << leimasimet[i] << " " << i << " " << j << " " << k << "\n";
for (int l = 1; l < min(tarkatkohdatb[k]+1,jononpit-leimasimet[i])+1; l++)
{
if (jono[leimasimet[i]+l+poistettub+leimasinpit-1] != leimasin[leimasinpit-tarkatkohdatb[k]+l-2])
{
koeb = 0;
break;}}
if (koeb == 1){
ktalteenb = k;
break;}}}
else break;
if (koeb == 1){
if (j < matkab[i-1]-leimasinpit){
paikat2b[montakotehtyb] = leimasimet[i]+tarkatkohdatb[ktalteenb]+poistettub+2;
montakotehtyb++;
talletusb[i-1]++;}
poistettub += tarkatkohdatb[ktalteenb] + 1;
}else break;}}
// for(int i=0;i<leimasimia;i++){for(int j=0;j<jononpit;j++){cout<<paikat[i][j]<<" ";}cout<<"\n";}
// if (mahdotonko==0 && edennee == 0){
// cout << mahdoton << "\n";
// mahdotonko = 1;
// }
// for (int i = 0; i < jononpit; i++)
// {
// merge(paikat,paikat+jononpit-1,paikat);
// }
// cout << ktalteen << "\n";
// cout << leimasimet[1] << " " << leimasimet[2] << "\n";
// for(int i=0;i<leimasinpit;i++){cout<<leimasin[i];}
// for(int i=0;i<jononpit;i++){cout<<jono[i];}
// for(int i=0;i<jononpit;i++){cout<<matka[i]<<" ";}cout<<"\n";
// for(int i=0;i<jononpit;i++){cout<<paikat2[i]<<" ";}cout<<"\n";
// for(int i=0;i<jononpit;i++){cout<<talletus[i]<<" ";}cout<<"\n";
// cout<<"\n";
// for(int i=0;i<jononpit;i++){cout<<matkab[i]<<" ";}cout<<"\n";
// for(int i=0;i<jononpit;i++){cout<<paikat2b[i]<<" ";}cout<<"\n";
// for(int i=0;i<jononpit;i++){cout<<talletusb[i]<<" ";}
// cout << edennee << " " << paikat[0] << " " << paikat[1] << " " << paikat[2] << " " << paikat[jononpit+5-edennee] << "\n";
// cout << "\n";
int lopputulos = 0;
int lopputulosb = 0;
for (int i = 0; i < leimasimia; ++i)
{
lopputulos += talletus[i];
}
for (int i = 0; i < leimasimia; ++i)
{
lopputulosb += talletusb[i];
}
// cout << lopputulos << " " << lopputulosb << " \n";
int taulukko[lopputulos+lopputulosb+leimasimia];
for (int i = 0; i < lopputulos; i++)
{
taulukko[i] = paikat2[i];
// cout << taulukko[i] << " \n";
}
for (int i = 0; i < lopputulosb; i++)
{
taulukko[i+lopputulos]= paikat2b[i];
// cout << taulukko[i+lopputulos] << " \n";
}
for (int i = 0; i < leimasimia; ++i)
{
taulukko[i+lopputulos+lopputulosb] = leimasimet[i+1] + 1;
}
mergeSort(taulukko, 0, lopputulos + lopputulosb + leimasimia - 1);
// printArray(taulukko, lopputulos + lopputulosb + leimasimia);
// for (int i = 0; i < lopputulos + lopputulosb + leimasimia; ++i)
// {
// cout << taulukko[i] << " ";
// }
int erotus = 0;
int erotukset[lopputulos + lopputulosb + leimasimia];
for (int i = 0; i < lopputulos + lopputulosb + leimasimia; i++)
{
erotukset[i] = -6;
}
for (int i = 0; i < lopputulos + lopputulosb + leimasimia - 1; i++)
{
if (taulukko[i+1]-taulukko[i] > erotus - 1){
erotus = taulukko[i+1] - taulukko[i];
}
if (taulukko[i+1]-taulukko[i] > 2 * leimasinpit - 2)
{
erotukset[i] = taulukko[i+1] - taulukko[i];
}
}
// printArray(erotukset, lopputulos + lopputulosb + leimasimia);
// cout << erotus << " \n";
if (mahdotonko == 0){
if (erotus > leimasinpit)
{
cout << -1 << " \n";
mahdotonko = 1;
}
else if (taulukko[0] != 1)
{
cout << -1 << " \n";
mahdotonko = 1;
}
else if (taulukko[lopputulos+lopputulosb+leimasimia-1] != jononpit-leimasinpit+1)
{
cout << -1 << " \n";
mahdotonko = 1;
}
}
if (mahdotonko == 0)
{
int summa2 = 0;
int summab2 = 0;
int siirrot = 0;
for (int j = 0; j < leimasimia; j++)
{
for (int i = 0; i < talletus[j]; ++i)
{
siirrot++;
}
summa2 += talletus[j];
}
for (int j = leimasimia-1; j > -1; j--)
{
for (int i = 0; i < talletusb[j]; ++i)
{
siirrot++;
}
summab2 += talletusb[j];
}
for (int i = 1; i < leimasimia + 1; i++)
{
siirrot++;
}
cout << siirrot << "\n";
int summa = 0;
for (int j = 0; j < leimasimia; j++)
{
for (int i = 0; i < talletus[j]; ++i)
{
cout << paikat2[talletus[j]-i-1+summa] << " ";
}
summa += talletus[j];
}
// cout << "\n";
int summab = 0;
for (int j = leimasimia-1; j > -1; j--)
{
for (int i = 0; i < talletusb[j]; ++i)
{
cout << paikat2b[talletusb[j]-i-1+summab] << " ";
}
summab += talletusb[j];
}
for (int i = 1; i < leimasimia + 1; i++)
{
cout << leimasimet[i] + 1 << " ";
}
cout << "\n";
}
/* for (int i = 0; i < jononpit; i++)
{
mergesort()
}
*/
return 0;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
BBBBBBBBBB
B

correct output
10
10 9 8 7 6 5 4 3 2 1 

user output
19
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 ...

Test 2

Group: 1

Verdict: ACCEPTED

input
AABBABABAB
AB

correct output
6
1 9 7 5 3 2 

user output
8
1 5 7 3 2 5 7 9 

Test 3

Group: 1

Verdict: ACCEPTED

input
AABAAABAAA
AABAA

correct output
4
6 5 2 1 

user output
3
6 1 5 

Test 4

Group: 1

Verdict: ACCEPTED

input
BAAAAAABBB
BAAAAAABB

correct output
2
2 1 

user output
2
2 1 

Test 5

Group: 1

Verdict: ACCEPTED

input
AAABBABBAA
AAABBABBAA

correct output
1

user output
1

Test 6

Group: 1

Verdict: ACCEPTED

input
GGGGGGGGGG
G

correct output
10
10 9 8 7 6 5 4 3 2 1 

user output
19
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 ...

Test 7

Group: 1

Verdict: ACCEPTED

input
QUUQUUQUQU
QU

correct output
6
9 7 5 4 2 1 

user output
7
7 5 2 1 4 7 9 

Test 8

Group: 1

Verdict: ACCEPTED

input
DWXDWDWXHJ
DWXHJ

correct output
3
1 4 6 

user output
3
1 4 6 

Test 9

Group: 1

Verdict: ACCEPTED

input
FSOCRDGQBB
FSOCRDGQB

correct output
2
2 1 

user output
2
2 1 

Test 10

Group: 1

Verdict: ACCEPTED

input
OETMIMPUPD
OETMIMPUPD

correct output
1

user output
1

Test 11

Group: 1

Verdict: ACCEPTED

input
DOWEUOWUEU
DOWEU

correct output
-1

user output
-1 

Test 12

Group: 1

Verdict: ACCEPTED

input
JQZYVSIWTE
JQZVYSIWTE

correct output
-1

user output
-1

Test 13

Group: 1

Verdict: ACCEPTED

input
ABABABABA
ABA

correct output
4
7 5 3 1 

user output
4
1 3 5 7 

Test 14

Group: 1

Verdict: ACCEPTED

input
AAAAAAAAAA
AAAAAAAAAB

correct output
-1

user output
-1

Test 15

Group: 2

Verdict: ACCEPTED

input
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

correct output
100
100 99 98 97 96 95 94 93 92 91...

user output
199
1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Truncated

Test 16

Group: 2

Verdict:

input
BABABAAAAAAAAAAAAAAAAAABABAAAA...

correct output
36
87 43 24 1 91 79 69 68 67 66 6...

user output
-1 

Test 17

Group: 2

Verdict:

input
ABABAAAAABABBBBAAAABBBBAABBBBB...

correct output
22
51 50 43 41 31 28 26 24 21 20 ...

user output
-1 

Test 18

Group: 2

Verdict: ACCEPTED

input
AAABABAAAABBBBBABABBAABBABABBA...

correct output
2
1 2 

user output
2
1 2 

Test 19

Group: 2

Verdict: ACCEPTED

input
AABABBBBBBAABBABABBBBBBAABBAAA...

correct output
1

user output
1

Test 20

Group: 2

Verdict: ACCEPTED

input
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS...

correct output
100
100 99 98 97 96 95 94 93 92 91...

user output
199
1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Truncated

Test 21

Group: 2

Verdict:

input
NNNININIMNIMKLMXCNIMKLMXCDEIMK...

correct output
18
1 2 3 74 5 79 58 7 84 64 37 10...

user output
-1 

Test 22

Group: 2

Verdict: ACCEPTED

input
VYQFNHMVTKOEYCXWINLKLHVFMEPQEU...

correct output
3
51 2 1 

user output
3
50 1 51 

Test 23

Group: 2

Verdict: ACCEPTED

input
IISNROLHLOJIWPTVFHFLUQRIROVLYP...

correct output
2
1 2 

user output
2
1 2 

Test 24

Group: 2

Verdict: ACCEPTED

input
WPMEMERJXXADLKONUZPUUFTPSXDHIV...

correct output
1

user output
1

Test 25

Group: 2

Verdict: ACCEPTED

input
LNSBGZAWFJZAWFJWFJLNSBLNSBGZAL...

correct output
-1

user output
-1 

Test 26

Group: 2

Verdict: ACCEPTED

input
IPIPYFUMRIPYFUMRLPIIIPYFIPYFUM...

correct output
-1

user output
-1

Test 27

Group: 2

Verdict: ACCEPTED

input
ABABABABABABABABABABABABABABAB...

correct output
49
97 95 93 91 89 87 85 83 81 79 ...

user output
49
1 3 5 7 9 11 13 15 17 19 21 23...
Truncated

Test 28

Group: 2

Verdict: ACCEPTED

input
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

correct output
-1

user output
-1

Test 29

Group: 3

Verdict: ACCEPTED

input
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

correct output
1000
1000 999 998 997 996 995 994 9...

user output
1999
1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Truncated

Test 30

Group: 3

Verdict:

input
BBBBBBBBAABBBBBBBBAABBBBBBBAAB...

correct output
218
1 626 607 519 415 5 975 957 92...

user output
-1 

Test 31

Group: 3

Verdict:

input
AABBBABAABABAAABBAAAAAAABBBAAB...

correct output
55
569 639 403 761 663 437 172 90...

user output
-1 

Test 32

Group: 3

Verdict:

input
ABBAAABAAABAAAAABBABABBABBABBB...

correct output
2
2 1 

user output
-1 

Test 33

Group: 3

Verdict:

input
BAAABBABBBAAAABAAAABBBBABAABAA...

correct output
1

user output
-1 

Test 34

Group: 3

Verdict:

input
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU...

correct output
1000
1000 999 998 997 996 995 994 9...

user output
-1 

Test 35

Group: 3

Verdict:

input
KSBMRKKSBMRZXBDKSKSBMRZXBDAMRZ...

correct output
178
723 731 1 935 857 820 760 735 ...

user output
-1 

Test 36

Group: 3

Verdict:

input
ILYLILYLVJILYLVJZCCQDLFRLSXZDM...

correct output
21
671 54 747 504 113 1 856 764 5...

user output
-1 

Test 37

Group: 3

Verdict: ACCEPTED

input
ZZJZNKHDLJBPXIAZNJIIGBEEJFSDAF...

correct output
2
1 2 

user output
2
1 2 

Test 38

Group: 3

Verdict: ACCEPTED

input
FIMWTOLSRKOWYDPCOFUJZMXJEJFKSU...

correct output
1

user output
1

Test 39

Group: 3

Verdict: ACCEPTED

input
AIVHCGUMKSTIYBRNPONXHRFVBKPYHX...

correct output
-1

user output
-1 

Test 40

Group: 3

Verdict: ACCEPTED

input
QPMSLIDCLFLBEXGVVQQNSVKJYXGETC...

correct output
-1

user output
-1 

Test 41

Group: 3

Verdict: ACCEPTED

input
ABABABABABABABABABABABABABABAB...

correct output
499
997 995 993 991 989 987 985 98...

user output
499
1 3 5 7 9 11 13 15 17 19 21 23...
Truncated

Test 42

Group: 3

Verdict: ACCEPTED

input
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

correct output
-1

user output
-1