| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 895305 | presko | 입자 가속기 (IZhO11_collider) | C++14 | 0 ms | 348 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<iostream>
#include<bits/stdc++.h>
#define MAXN 1000010
using namespace std;
int ind[MAXN];
vector<pair<int,int>> order;
string s;
char getans(int pos)
{
    //int ans=pos;
    for(int i=0;i<(int)order.size();i++)
    {
        int l=order[i].first;
        int r=order[i].second;
        if(l<=pos && pos<=r)
        {
            order[i]={0,0};//could use -erase-
            /*if(r-l+1>1)
            {
                order.push_back({l,max(pos-1,l)});
                order.push_back({min(pos+1,r),r});
            }
            ans++;*/
            for(int j=l+1;j<=r;j++)
            {
                ind[j-1]=ind[j];
            }
            ind[r]=l;
        }
        else if(r<=pos && pos<=l)
        {
            order[i]={0,0};
            for(int j=l-1;j>=r;j--)
            {
                ind[j+1]=ind[j];
            }
            ind[r]=l;
        }
    }
    return s[ind[pos]-1];
}
int main()
{
    int n,q;
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>q;
    cin>>s;
    for(int i=0;i<(int)s.size();i++)
    {
        ind[i+1]=i+1;
    }//could be skipped
    for(int i=0;i<q;i++)
    {
        char t;
        cin>>t;
        if(t=='a')
        {
            int ql,qr;
            cin>>ql>>qr;
            if(ql<qr)order.push_back({ql,qr});
            else if(qr<ql)order.push_back({ql,qr});
        }
        else
        {
            int pos;
            cin>>pos;
            cout<<getans(pos)<<"\n";
        }
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
