一开始是这份代码TLE了,可这份代码的复杂度不是O(n)吗,为什么会TLE
#include <bits/stdc++.h>
using namespace std;
string ans;
bool f;
char a;
int sum;
int main()
{
while(cin>>a)
{
if(f)
{
if(a=='1')
{
ans='1'+ans;
}
else
{
ans=ans+a;
}
}
else
{
if(a=='2')
{
f=1;
ans='2';
while(sum--)
{
cout<<'1';
}
}
else if(a=='1')
{
sum++;
}
else
{
cout<<a;
}
}
}
cout<<ans;
}
后来改成了这份,原来TLE的点过了,却EOF了
#include <bits/stdc++.h>
using namespace std;;
bool f;
char a,ans[100001];
int sum,cnt=1;
int main()
{
while(cin>>a)
{
if(f)
{
if(a=='1')
{
cout<<'1';
}
else
{
ans[cnt++]=a;
}
}
else
{
if(a=='2')
{
f=1;
ans[0]='2';
while(sum--)
{
cout<<'1';
}
}
else if(a=='1')
{
sum++;
}
else
{
cout<<a;
}
}
}
cout<<ans;
return 0;
}
1.为什么第一份代码会TLE
2.EOF是什么问题,应该怎么解决?