/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 540.0 KiB
#2 Accepted 5ms 540.0 KiB
#3 Accepted 4ms 540.0 KiB
#4 Accepted 5ms 588.0 KiB
#5 Accepted 2ms 544.0 KiB
#6 Accepted 2ms 492.0 KiB
#7 Accepted 2ms 540.0 KiB
#8 Accepted 2ms 540.0 KiB
#9 Accepted 2ms 540.0 KiB
#10 Accepted 2ms 540.0 KiB
#11 Accepted 1ms 540.0 KiB
#12 Accepted 2ms 544.0 KiB
#13 Accepted 1ms 372.0 KiB
#14 Accepted 1ms 540.0 KiB
#15 Accepted 2ms 540.0 KiB

Code

/*
 *   Copyright (c) 2024 Emon Thakur
 *   All rights reserved.
 */
#include<bits/stdc++.h>
using namespace std;

#define fr freopen("input14.txt","r",stdin)
//ofstream file("output14.txt");

void solve()
{
    int n,k; cin>>n>>k;
    ++k;
    vector<string> a(n);
    for(int i=0;i<n;i++) cin>>a[i];

    vector<int> pfs(n);
    pfs[0] = a[0].size();
    for(int i=1;i<n;i++) pfs[i] = pfs[i-1]+a[i].size();

    int longest=pfs[k-1];
    for(int i=k;i<n;i++) longest = max(longest , pfs[i]-pfs[i-k]);  // tbc
    
    vector<char> ans(longest,'0');
    int cnt = 0;
    if(pfs[k-1] == longest)
    {
        int ind = 0;
        for(int i=0; i<k; i++)
        {
            for(auto e:a[i]) 
            {
                ans[ind] = e;
                ++ind;
                //++cnt;
            }
        }
    }
    
    for(int i=k; i<n; i++)
    {
        if(pfs[i]-pfs[i-k] == longest)
        {
            int ind = 0;
            bool run = false, br = false;
            for(int j=i-k+1; j<=i; j++)
            {
                for(auto e:a[j])
                {
                    if(e > ans[ind]) run = true;
                    if(e < ans[ind] && !run) 
                    {
                        br = true;
                        break;
                    }
                    ans[ind] = e;
                    ++ind;
                    //++cnt;
                }
                if(br) break;
            }
        }
    }

    //cout<<ans.size()<<endl;
    for(auto e:ans) cout<<e; cout<<endl;
    //cout<<cnt<<endl;
}

int main()
{
    //fr;
    int t; cin>>t; while(t--) 
    {
        solve();
    }
}

Information

Submit By
Type
Submission
Problem
P1083 Number concatenation
Language
C++20 (G++ 13.2.0)
Submit At
2024-08-07 17:47:39
Judged At
2024-08-07 17:47:39
Judged By
Score
100
Total Time
5ms
Peak Memory
588.0 KiB