답안 #680110

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
680110 2023-01-09T22:58:20 Z GusterGoose27 GTA (COI14_gta) C++11
20 / 100
1526 ms 262144 KB
#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int MAXN = 100;
int TIME = 1e6;
string strings[MAXN];
int n;

set<string> vis;
bool adj[MAXN][MAXN];
vector<string> derived[2];
bool cur = 0;

map<char, string> conv;
map<string, string> conv2;

int it = 0;

void add_to(vector<string> &nxt, string s) {	
	for (int i = 0; i < s.size(); i++) {
		string nstr = s.substr(0, i)+conv[s[i]]+s.substr(i+1, s.size()-i-1);
		if (vis.find(nstr) == vis.end() && nstr.size()) {
			nxt.push_back(nstr);
			vis.insert(nstr);
		}
		it++;
	}
	for (int i = 0; i < s.size()-1; i++) {
		string seq = s.substr(i, 2);
		if (conv2.find(seq) != conv2.end()) {
			string nstr = s.substr(0, i)+conv2[seq]+s.substr(i+2, s.size()-i-2);
			if (vis.find(nstr) == vis.end() && nstr.size()) {
				nxt.push_back(nstr);
				vis.insert(nstr);
			}
		}
		it++;
	}
}

void makeable(int i) {
	vis.clear();
	derived[cur].clear();
	derived[cur].push_back(strings[i]);
	it = 0;
	while (it < 2*TIME/n) {
		derived[!cur].clear();
		for (string s: derived[cur]) {
			add_to(derived[!cur], s);
			if (it >= 2*TIME/n) break;
		}
		cur = !cur;
	}
	for (int j = 0; j < i; j++) adj[i][j] = adj[j][i] = (vis.find(strings[j]) != vis.end());
}

int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	cin >> n;
	conv['A'] = "TC";
	conv['C'] = "AG";
	conv['G'] = "CT";
	conv['T'] = "GA";
	conv2["TC"] = "A";
	conv2["AG"] = "C";
	conv2["CT"] = "G";
	conv2["GA"] = "T";
	for (int i = 0; i < n; i++) {
		cin >> strings[i];
		adj[i][i] = 1;
	}
	for (int i = 1; i < n; i++) {
		makeable(i);
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cout << adj[i][j];
		}
		cout << '\n';
	}
}

Compilation message

gta.cpp: In function 'void add_to(std::vector<std::__cxx11::basic_string<char> >&, std::string)':
gta.cpp:26:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for (int i = 0; i < s.size(); i++) {
      |                  ~~^~~~~~~~~~
gta.cpp:34:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |  for (int i = 0; i < s.size()-1; i++) {
      |                  ~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 369 ms 11144 KB Output is correct
2 Correct 403 ms 3904 KB Output is correct
3 Incorrect 406 ms 1040 KB Output isn't correct
4 Incorrect 412 ms 928 KB Output isn't correct
5 Incorrect 406 ms 816 KB Output isn't correct
6 Incorrect 445 ms 948 KB Output isn't correct
7 Incorrect 620 ms 3404 KB Output isn't correct
8 Incorrect 1526 ms 30808 KB Output isn't correct
9 Runtime error 202 ms 262144 KB Execution killed with signal 9
10 Runtime error 118 ms 262144 KB Execution killed with signal 9