이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "dna.h"
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <random>
using namespace std;
string analyse(int n, int t)
{
string str = "";
bool flag = 0;
int cnt = 0;
int k = 12;
while (str.size() < n || cnt != 0)
{
if (flag == 0)
{
string a, b;
if (rand() % 2)
a = "0", b = "1";
else
a = "1", b = "0";
cout << a << " " << b << endl;
if (make_test(str + a))
str += a, cnt = 0;
else
{
if (cnt == k)
{
if (!make_test(str + b))
{
// int l = 1, r = k;
// while (l < r)
// {
// int mid = (l + r + 1) / 2;
// string res = str.substr(0, str.size() - k + mid);
// if (make_test(res))
// l = mid;
// else
// r = mid - 1;
// }
// str = str.substr(0, str.size() - k + l);
int tag;
for (int i = 1; i <= cnt; i++)
{
if (make_test(str.substr(0, str.size() - cnt + i)))
tag = i;
else
break;
}
str = str.substr(0, str.size() - cnt + tag);
flag = 1;
cnt = 0;
continue;
}
else
{
str += b;
cnt = 0;
continue;
}
}
else
str += b, cnt++;
}
}
if (flag == 1)
{
if (make_test("0" + str))
str = "0" + str;
else
str = "1" + str;
}
if (str.size() == n)
{
// int l = 1, r = cnt;
// while (l < r)
// {
// int mid = (l + r + 1) / 2;
// string res = str.substr(0, str.size() - cnt + mid);
// if (make_test(res))
// {
// l = mid;
// }
// else
// r = mid - 1;
// }
// str = str.substr(0, str.size() - cnt + l);
int tag;
for (int i = 1; i <= cnt; i++)
{
if (make_test(str.substr(0, str.size() - cnt + i)))
tag = i;
else
break;
}
str = str.substr(0, str.size() - cnt + tag);
flag = 1;
cnt = 0;
}
}
return str;
}
컴파일 시 표준 에러 (stderr) 메시지
dna.cpp: In function 'std::__cxx11::string analyse(int, int)':
dna.cpp:16:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while (str.size() < n || cnt != 0)
~~~~~~~~~~~^~~
dna.cpp:76:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (str.size() == n)
~~~~~~~~~~~^~~~
dna.cpp:92:17: warning: 'tag' may be used uninitialized in this function [-Wmaybe-uninitialized]
int tag;
^~~
dna.cpp:45:29: warning: 'tag' may be used uninitialized in this function [-Wmaybe-uninitialized]
int tag;
^~~
grader.cpp: In function 'bool make_test(std::__cxx11::string)':
grader.cpp:14:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < p.size(); i++) {
~~^~~~~~~~~~
grader.cpp:23:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 1; i <= ss.size(); i++) {
~~^~~~~~~~~~~~
grader.cpp:28:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (pr[i] == p.size()) {
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |