제출 #28084

#제출 시각아이디문제언어결과실행 시간메모리
28084abcdef6199Martian DNA (IOI16_dna)C++98
100 / 100
13 ms2024 KiB
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;

struct Random {
    int mul, add, mod, cur;
    Random() {
        mul = 1234567891;
        add = 126126727;
        mod = 1281231167;
        cur = 0;
    }
    int NextRand(int n) {
        cur = ((long long) cur * mul + add) % mod;
        return cur % n;
    }
} Random;

string analyse(int n, int t) {
    string ans = "";
    int cur = 0;
    for (int i = 1; i <= n; ++i) {
        int x = Random.NextRand(2);
        if (make_test(ans + char(x + 48))) {
            ans += char(x + 48);
            cur = 0;
        }
        else {
            ans += char(1 - x + 48);
            cur++;
        }
        if (cur == 19) break;
    }
    int l = (int) ans.size() - cur + 1, r = (int) ans.size(), f = (int) ans.size() - cur;
    while (l <= r) {
        int mid = (l + r) >> 1;
        if (make_test(ans.substr(0, mid))) {
            f = mid;
            l = mid + 1;
        }
        else r = mid - 1;
    }
    ans = ans.substr(0, f);

    while (ans.size() < n) {
        if (make_test("0" + ans)) ans = "0" + ans;
        else ans = "1" + ans;
    }
    return ans;
}

컴파일 시 표준 에러 (stderr) 메시지

dna.cpp: In function 'std::__cxx11::string analyse(int, int)':
dna.cpp:45:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (ans.size() < n) {
                       ^
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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...