으으 머징 ... 왜 런타임 오류지 ㅜ_ㅜ
realloc() 쓴 재할당으로 부분점수 다 채울려고 했는데 슬프당..
#include <cstdio>
#include <iostream>
#include <set>
#pragma warning(disable:4996)
#include <string.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char** argv) {
int T;
int test_case;
int count;
char _in[50010] ={'\0', };
char _two[3] = { '\0', };
char _one[2] = { '\0', };
bool two_chk;
bool one_chk;
int *_test;
int _test_count;
bool found;
int i;
// H , B , C ,N ,O , F , P, S , K , V , Y , I , W , U // 14
set<string> arr;
set<string> arr2;
setbuf(stdout, NULL);
arr.insert("he"); arr.insert("li"); arr.insert("be"); arr.insert("ne"); arr.insert("na");
arr.insert("mg"); arr.insert("al"); arr.insert("si"); arr.insert("cl"); arr.insert("ar");
arr.insert("ca"); arr.insert("sc"); arr.insert("ti"); arr.insert("cr"); arr.insert("mn");
arr.insert("fe"); arr.insert("co"); arr.insert("ni"); arr.insert("cu"); arr.insert("zn");
arr.insert("ga"); arr.insert("ge"); arr.insert("as"); arr.insert("se"); arr.insert("br");
arr.insert("kr"); arr.insert("rb"); arr.insert("sr"); arr.insert("zr"); arr.insert("nb");
arr.insert("mo"); arr.insert("tc"); arr.insert("ru"); arr.insert("rh"); arr.insert("pd");
arr.insert("ag"); arr.insert("cd"); arr.insert("in"); arr.insert("sn"); arr.insert("sb");
arr.insert("te"); arr.insert("xe"); arr.insert("cs"); arr.insert("ba"); arr.insert("hf");
arr.insert("ta"); arr.insert("re"); arr.insert("os"); arr.insert("lr"); arr.insert("pt");
arr.insert("au"); arr.insert("hg"); arr.insert("tl"); arr.insert("pb"); arr.insert("bi");
arr.insert("po"); arr.insert("at"); arr.insert("rn"); arr.insert("fr"); arr.insert("ra");
arr.insert("rf"); arr.insert("db"); arr.insert("sg"); arr.insert("bh"); arr.insert("hs");
arr.insert("mt"); arr.insert("ds"); arr.insert("rg"); arr.insert("cn"); arr.insert("fl");
arr.insert("lv"); arr.insert("la"); arr.insert("ce"); arr.insert("pr"); arr.insert("nd");
arr.insert("pm"); arr.insert("sm"); arr.insert("eu"); arr.insert("gd"); arr.insert("tb");
arr.insert("dy"); arr.insert("ho"); arr.insert("er"); arr.insert("tm"); arr.insert("yb");
arr.insert("lu"); arr.insert("ac"); arr.insert("th"); arr.insert("pa"); arr.insert("np");
arr.insert("pu"); arr.insert("am"); arr.insert("cm"); arr.insert("bk"); arr.insert("cf");
arr.insert("es"); arr.insert("fm"); arr.insert("md"); arr.insert("no"); arr.insert("lr");
arr2.insert("h"); arr2.insert("b"); arr2.insert("c"); arr2.insert("n"); arr2.insert("o");
arr2.insert("f"); arr2.insert("p"); arr2.insert("s"); arr2.insert("k"); arr2.insert("v");
arr2.insert("y"); arr2.insert("i"); arr2.insert("w"); arr2.insert("u");
scanf("%d", &T); //Codeground 시스템에서는 C++ 에서도 scanf 사용을 권장합니다.
for (test_case = 1; test_case <= T; ++test_case) {
// 이 부분에서 알고리즘 프로그램을 작성하십시오.
_test=(int *)malloc(1*sizeof(int));
count = 0;
_test_count =0;
found = true;
i=0;
scanf("%s", _in);
while (count < strlen(_in))
{
back:
_two[0] = _in[count];
_two[1] = _in[count + 1];
_one[0] = _in[count];
if (arr.find(_two) != arr.end() && arr2.find(_one) != arr2.end())
{
_test[_test_count]=count;
count+=2;
_test_count++;
_test=(int *)realloc(_test,(_test_count+1)*sizeof(int));
goto back;
}
if (arr.find(_two) != arr.end())
{
count += 2;
}
else if (arr2.find(_one) != arr2.end())
{
count++;
}
else
{
if(i!=_test_count)
{
count=_test[i]+1;
i++;
goto back;
}
else{
found=false;
break;
}
}
}
// 이 부분에서 정답을 출력하십시오. Codeground 시스템에서는 C++ 에서도 printf 사용을 권장합니다.
printf("Case #%d\n", test_case);
if (found)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
free(_test);
}
scanf("%d",&T);
return 0; // 정상종료 시 반드시 0을 리턴해야 합니다.
}