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...