Mam mały kłopot. Niby dla każdej z prób kod działa poprawnie, ale sędzia mi go odrzuca. Nie przechodzi ani jeden test
Kod:
#include <iostream>
using namespace std;
void getln(string &line, string &prev)
{
prev = line;
getline(cin, line);
}
string line, pline;
int textS=0;
bool bool1 = false;
main()
{
while(textS<50000)
{
point1:
string content;
getln(line, pline);
int len = line.length();
if(pline == line)
{
textS+=2;
continue;
}
for(int i = 0; i<len; i++)
{
if(bool1 == true) goto point2;
if(line[i]==34)
{
#define INC_I if(i!=line.length()-1)i++;
cout<<line[i];
INC_I
textS++;
while(!(line[i]==34 && line[i-1]!=92))
{
cout<<line[i];
i++;
textS++;
if(i==line.length()-1)break;
}
cout<<line[i];
}
else if(line[i]==39)
{
cout<<line[i];
INC_I
textS++;
while(!(line[i]==39 && line[i-1]!=92))
{
cout<<line[i];
i++;
textS++;
if(i==line.length()-1)break;
}
cout<<line[i];
}
else
{
if(line[i]==47 && line[i+1]==42)
{
if(i>len-2)
{
getln(line, pline);
int len = line.length();
i=0;
}
else i+=2;
textS+=2;
point2:
if(!(line[i]==42 && line[i+1]==47))
{
while(!(line[i]==42 && line[i+1]==47))
{
i++; textS++;
if(i==len)
{
bool1 = true;
goto point1;
}
}}
i++;
textS++;
bool1 = false;
continue;
}
else if(line[i]==47 && line[i+1]==47)
{
while(line[len-1]==92)
{
getln(line, pline);
len = line.length();
}
break;
}
cout<<line[i];
}
content.push_back(line[i]);
}
if(!content.empty())cout<<endl;
}
}
Przyklad:
Input:
printf("");
printf("// ");
printf(" /* */ ");
printf("\n");
printf(" // \n /* \n */ ");
cout<<" Bla // Bla Bla\n";
cout<<" Bla /* Bla // */ // Bla"<<endl;
/ ala/ //alka
/* / ala/ // */
/ala*/
/ala*/* ala *./ */
// komentarz
// komentarz2 \
dalszy komentarzyk
perl/*/*/*///*//*//*//**//*//*//*//
/*/* /* ///*//*//*//**//*//*//*//*/
komentarz // czy nie komentarz
*//.*/.**./
/*hjfdsjhf
sdfjh
dsgfj
8?
/
8
**
//
*/
Output:
printf("");
printf("// ");
printf(" /* */ ");
printf("\n");
printf(" // \n /* \n */ ");
cout<<" Bla // Bla Bla\n";
cout<<" Bla /* Bla // */ // Bla"<<endl;
/ ala/
/ala*/
/ala*
perl*
komentarz
*