Submission #255365

# Submission time Handle Problem Language Result Execution time Memory
255365 2020-07-31T19:57:57 Z tutis Type Printer (IOI08_printer) C++17
100 / 100
151 ms 6352 KB
/*input
3
print
the
poem
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
int main()
{
	ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0), cerr.tie(0);
	int n;
	cin >> n;
	string s[n];
	string ilgiaus = "";
	for (int i = 0; i < n; i++)
	{
		cin >> s[i];
		if (s[i].size() >= ilgiaus.size())
			ilgiaus = s[i];
	}
	for (int t = ilgiaus.size() - 1; t >= 0; t--)
	{
		vector<string>x[27];
		for (int i = 0; i < n; i++)
		{
			if (t >= s[i].size())
				x[0].push_back(s[i]);
			else
				x[s[i][t] - 'a' + 1].push_back(s[i]);
		}
		int i = 0;
		for (int b = 0; b < 27; b++)
		{
			if (b != (ilgiaus[t] - 'a' + 1))
			{
				for (string a : x[b])
				{
					s[i] = a;
					i++;
				}
			}
		}
		for (string a : x[ilgiaus[t] - 'a' + 1])
		{
			s[i] = a;
			i++;
		}
	}


	string X = "";
	vector<char>ans;
	for (string c : s)
	{
		int kiek = -1;
		for (int i = 0; i <= max(c.size(), X.size()); i++)
		{
			if ((i >= c.size() || i >= X.size()) || c[i] != X[i])
			{
				kiek = i;
				break;
			}
		}
		while (X.size() > kiek)
		{
			ans.push_back('-');
			X.pop_back();
		}
		for (int i = X.size(); i < c.size(); i++)
		{
			ans.push_back(c[i]);
			X.push_back(c[i]);
		}
		ans.push_back('P');
	}
	cout << ans.size() << "\n";
	for (char x : ans)
		cout << x << "\n";
}

Compilation message

printer.cpp: In function 'int main()':
printer.cpp:29:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if (t >= s[i].size())
        ~~^~~~~~~~~~~~~~
printer.cpp:59:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i <= max(c.size(), X.size()); i++)
                   ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp:61:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if ((i >= c.size() || i >= X.size()) || c[i] != X[i])
         ~~^~~~~~~~~~~
printer.cpp:61:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if ((i >= c.size() || i >= X.size()) || c[i] != X[i])
                          ~~^~~~~~~~~~~
printer.cpp:67:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while (X.size() > kiek)
          ~~~~~~~~~^~~~~~
printer.cpp:72:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = X.size(); i < c.size(); i++)
                          ~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB Output is correct
2 Correct 4 ms 512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 824 KB Output is correct
2 Correct 22 ms 1512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 24 ms 1820 KB Output is correct
2 Correct 27 ms 2264 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 63 ms 3780 KB Output is correct
2 Correct 115 ms 5012 KB Output is correct
3 Correct 102 ms 5160 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 3296 KB Output is correct
2 Correct 151 ms 5652 KB Output is correct
3 Correct 97 ms 4832 KB Output is correct
4 Correct 137 ms 6352 KB Output is correct