Fastio
가장 쉬운 c++ fastio는
//C와 C++과의 연동성을 제거하는 함수임
ios_base::sync_with_stdio(false);
//cin과 cout가 서로 붙어 있을때, cin이 입력을 끝낼 때까지 cout 출력이 되지 않지만 해당 함수를 사용함으로 cin이 입력 받는 중에도 출력이 됨됨
cin.tie(NULL);
#include<cstdio>
#include<string>
using namespace std;
//버퍼의 크기를 2의 20승으로 지정, 20승인 이유는 그냥 크게 잡은 것
#define BUF_SIZE (1 << 20)
//버퍼
char Readbuffer[BUF_SIZE];
//입력 함수
inline char read();
inline int readInt();
string readString();
int main(void)
{
int N;
string S;
N=readInt();
S=readString();
//.c_str()은 char* 로 변환해주는 함수이며, 반환 값은 문자열의 시작 주소임, 즉 char[]처럼 사용가능함
printf("%d\n%s",N*2,S.c_str());
}
inline char read()
{
static int curr_pos, next_pos;
if (curr_pos == next_pos)
{
next_pos = fread(Readbuffer, 1, 1 << 20, stdin);
if (!next_pos)
return 0;
curr_pos = 0;
}
return Readbuffer[curr_pos++];
}
inline int readInt() {
int sum = 0;
char curr = read();
bool flag = false;
//계행 및 공백문자 태우기
while (curr <= 32)
curr = read();
//음수를 입력 받을시 flag값을 사용하여 음수 기록
if (curr == '-')
{
flag = true;
curr = read();
}
//계행 및 공백 문자 나올 때 까지 입력
while (curr >= 48)
{
sum = sum * 10 + curr - '0';
curr = read();
}
//flag 값에 따라 음수, 양수로 반환
return flag ? -sum : sum;
}
inline string readString() {
string result;
char now = read();
//계행, 공백 문자 태우기
while (now <= 32)
now = read();
//계행 및 공백 문자 나올 때 까지 입력
while (now > 32)
{
result += now;
now = read();
}
return result;
}