Submission #1201041

#TimeUsernameProblemLanguageResultExecution timeMemory
1201041vnedu복사 붙여넣기 2 (JOI15_copypaste2)C++17
100 / 100
171 ms3028 KiB
#include<bits/stdc++.h>
using namespace std;

int n,l,m,_s;
string s;
namespace sub1
{
    bool check()
    {
        return (l<=2000 && m<=2000);
    }
    void solve()
    {
        s=" "+s;
        while(m--)
        {
            int a,b,c; cin>>a>>b>>c;
            ++a;
            string t=" ",gaugau=s.substr(a,b-a+1);
            for(int i=0;i<=_s;++i)
            {
                if(i>0) t+=s[i];
                if(i==c) t+=gaugau;
            }
            s=t;
            _s+=b-a+1;
            while(_s>l) s.pop_back(),--_s;
//            cout<<gaugau<<' '<<s<<'\n';
        }
        for(int i=1;i<=n;++i) cout<<s[i];
    }
}
namespace subfull
{
    const int M = 2e5 + 10;
    int sz[M];
    struct node
    {
        int a,b,c;
        node() {}
        void input()
        {
            cin>>a>>b>>c;
            ++a;
        }
    } arr[M];
    char f(int i, int j)
    {
//        cout<<i<<' '<<j<<'\n';
        if(i==0) return s[j-1];
        int a=arr[i].a;
        int b=arr[i].b;
        int c=arr[i].c;
        if(c>=j) return f(i-1,j);
//        if(i==4 && j==1) cout<<j<<' '<<a<<' '<<c+1<<'\n';
        if(j<=c+b-a+1) return f(i-1,j+a-(c+1));
        return f(i-1,j-(b-a+1));
    }
    void solve()
    {
        for(int i=1;i<=m;++i)
        {
            arr[i].input();
        }
        for(int i=1;i<=n;++i) cout<<f(m,i);
    }
}
void solve()
{
    cin>>n>>l>>s>>m;
    _s=(int)s.size();
//    if(sub1::check()) return void(sub1::solve());
    return void(subfull::solve());
}
int main(void)
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int testcase=1;
//    cin>>testcase;
    while(testcase--)
        solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...