답안 #338723

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
338723 2020-12-23T18:52:43 Z FlashGamezzz Savez (COCI15_savez) C++11
36 / 120
148 ms 65540 KB
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <utility>
#include <vector>
#include <iostream>
#include <string>
#include <unordered_map>

using namespace std;

int n, p = 31, m = 1000000009;
vector< vector<int> > ph, sh;

int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n;
	int pow = 1, h = 0; vector<int> temp;
	for (int i = 0; i < n; i++){
		string a; cin >> a;
		pow = 1, h = 0; temp.clear();
		for (int j = 0; j < a.length(); j++) {
			h += (a[j]-'A'+1)*pow; h %= m;
			temp.push_back((int) h); pow *= p; pow %= m;
		}
		ph.push_back(temp); h = 0; temp.clear();
		for (int j = a.length()-1; j >= 0; j--) {
			h *= p; h %= m; h += (a[j]-'A'+1); h %= m;
			temp.push_back((int) h);
		}
		sh.push_back(temp);
	}
	unordered_map<int, int> subsq;
	int ans = 0;
	for (int i = 0; i < n; i++){
		int mv = 0;
		for (int j = 0; j < ph[i].size(); j++){
			if (ph[i][j] == sh[i][j]){
				unordered_map<int, int>::iterator it = subsq.find(ph[i][j]);
				if (it != subsq.end()){
					mv = max(mv, it->second);
				}
			}
		}
		subsq[ph[i][ph[i].size()-1]] = mv+1; ans = max(ans, mv+1);
	}
	cout << ans << endl;
}

Compilation message

savez.cpp: In function 'int main()':
savez.cpp:23:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |   for (int j = 0; j < a.length(); j++) {
      |                   ~~^~~~~~~~~~~~
savez.cpp:38:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |   for (int j = 0; j < ph[i].size(); j++){
      |                   ~~^~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 3 ms 1004 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 30 ms 8172 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 876 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 34 ms 8560 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 53 ms 9564 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 48 ms 11016 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 63 ms 14292 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 101 ms 26648 KB Output is correct
2 Correct 95 ms 26676 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 148 ms 44180 KB Output is correct
2 Correct 148 ms 44260 KB Output is correct
3 Runtime error 145 ms 65540 KB Execution killed with signal 9 (could be triggered by violating memory limits)