Submission #959207

# Submission time Handle Problem Language Result Execution time Memory
959207 2024-04-07T17:06:31 Z maxFedorchuk Type Printer (IOI08_printer) C++17
100 / 100
111 ms 5328 KB
#include <bits/stdc++.h>
using namespace std;

string s="";
int in;

bool cmp(string a,string b)
{
    int in1=-1,in2=-1;

    for(int i=0;i<a.size();i++)
    {
        if(a[i]!=s[i])
        {
            break;
        }
        in1=i;
    }
    for(int i=0;i<b.size();i++)
    {
        if(b[i]!=s[i])
        {
            break;
        }
        in2=i;
    }

    if(in1==in2)
    {
        return (a<b);
    }

    return (in1<in2);
}

bool comp(string a,string b)
{
    a=a.substr(0,b.size());
    return (a==b);
}

int main()
{
    cin.tie(0);
    ios_base::sync_with_stdio(0);

    int n;
    cin>>n;

    vector < string > mas;

    for(int i=1;i<=n;i++)
    {
        string a;
        cin>>a;
        mas.push_back(a);
    }

    sort(mas.begin(),mas.end());

    for(int i=0;i<n;i++)
    {
        if(s.size()<mas[i].size())
        {
            s=mas[i];
        }
    }

    sort(mas.begin(),mas.end(),cmp);

    vector < char > ans;
    s="";
    for(auto u:mas)
    {
        while(!comp(u,s))
        {
            s=s.substr(0,s.size()-1);
            ans.push_back('-');
        }

        for(int i=s.size();i<u.size();i++)
        {
            ans.push_back(u[i]);
            s+=u[i];
        }
        ans.push_back('P');
    }

    cout<<ans.size()<<"\n";

    for(auto u:ans)
    {
        cout<<u<<"\n";
    }

    return 0;
}

Compilation message

printer.cpp: In function 'bool cmp(std::string, std::string)':
printer.cpp:11:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |     for(int i=0;i<a.size();i++)
      |                 ~^~~~~~~~~
printer.cpp:19:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for(int i=0;i<b.size();i++)
      |                 ~^~~~~~~~~
printer.cpp: In function 'int main()':
printer.cpp:81:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   81 |         for(int i=s.size();i<u.size();i++)
      |                            ~^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 604 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 344 KB Output is correct
2 Correct 3 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 856 KB Output is correct
2 Correct 15 ms 1020 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 1500 KB Output is correct
2 Correct 17 ms 1276 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 49 ms 2768 KB Output is correct
2 Correct 88 ms 4808 KB Output is correct
3 Correct 62 ms 3796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 37 ms 2768 KB Output is correct
2 Correct 111 ms 5328 KB Output is correct
3 Correct 72 ms 4164 KB Output is correct
4 Correct 94 ms 4936 KB Output is correct