답안 #57795

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
57795 2018-07-16T07:11:32 Z gnoor Type Printer (IOI08_printer) C++17
90 / 100
1000 ms 45220 KB
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#include <map>

using namespace std;

vector<string> tbl;
vector<char> ans;
map<string,int> mp;

bool cmp(const string &a ,const string &b) {
	string x;
	int cur=0;
	while (a[cur]==b[cur]) {
		x.push_back(a[cur]);
		cur++;		
	}
	string y=x;
	if (a[cur]) x.push_back(a[cur]);
	if (b[cur]) y.push_back(b[cur]);
	//cout << x << " " << y << " " << mp[x] << " " << mp[y] << endl;
	if (mp[x]!=mp[y]) return mp[x]<mp[y];
	return x<y;
}

int main () {
	int n;
	scanf("%d",&n);
	string x;
	string y;
	for (int i=0;i<n;i++) {
		cin >> x;
		tbl.push_back(x);
		y.clear();
		for (int j=0;j<(int)x.size();j++) {
			y.push_back(x[j]);
			mp[y]=max(mp[y],(int)x.size());
		}
	}
	sort(tbl.begin(),tbl.end(),cmp);
	for (int i=0;i<(int)tbl[0].size();i++) {
		ans.push_back(tbl[0][i]);
	}
	ans.push_back('P');
	for (int i=1;i<n;i++) {
		int cnt=0;
		while (tbl[i][cnt]==tbl[i-1][cnt]) cnt++;
		for (int j=0;j<(int)tbl[i-1].size()-cnt;j++) {
			ans.push_back('-');
		}
		for (int j=cnt;j<(int)tbl[i].size();j++) {
			ans.push_back(tbl[i][j]);
		}
		ans.push_back('P');
	}
	printf("%d\n",ans.size());
	for (int i=0;i<(int)ans.size();i++) {
		printf("%c\n",ans[i]);
	}
	return 0;
}

Compilation message

printer.cpp: In function 'int main()':
printer.cpp:59:26: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<char>::size_type {aka long unsigned int}' [-Wformat=]
  printf("%d\n",ans.size());
                ~~~~~~~~~~^
printer.cpp:31:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
  ~~~~~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 3 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 444 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 504 KB Output is correct
2 Correct 3 ms 504 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 720 KB Output is correct
2 Correct 3 ms 720 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 720 KB Output is correct
2 Correct 7 ms 908 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 18 ms 1300 KB Output is correct
2 Correct 21 ms 1460 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 67 ms 3012 KB Output is correct
2 Correct 160 ms 5884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 202 ms 6952 KB Output is correct
2 Correct 157 ms 6952 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 484 ms 16572 KB Output is correct
2 Correct 794 ms 37536 KB Output is correct
3 Correct 712 ms 37536 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 510 ms 37536 KB Output is correct
2 Execution timed out 1067 ms 45220 KB Time limit exceeded
3 Halted 0 ms 0 KB -