Codeforces Round #515 (Div. 3)C. Books Queries

版权声明:《学习技巧》每次使用单边大脑的时间不要太久,连续使用左边大脑30分钟就如同连续使用左臂30分钟一样,周期性的交换让大脑两侧能够轮流休息,左脑活动包括了循序渐进的工作,解决逻辑问题与分析,而右脑活动包括了隐喻,创造性思考,模式匹配和可视化。 https://blog.csdn.net/intmainhhh/article/details/83034969

题目传送门
题目:
这问题不难
在这里插入图片描述
在这里插入图片描述
这题并不难,下面代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e6+10;
int l=200000,r=l-1,t,q;
int pos[maxn];
int main() {
    char s;
    cin>>q;
    while(q--) {
        cin>>s>>t;
        if(s=='L') l--,pos[t]=l;
        else if(s=='R') r++,pos[t]=r;
        else if(s=='?') cout<<min(pos[t]-l,r-pos[t])<<endl;
    }
}
/*
const int maxn=1000+10;
int arr[maxn];
int vis[maxn];
int main() {
    int n,len;
    cin>>n>>len;
    int ans=0;
    int flag=0;
    for(int i=1; i<=n; i++) {
        cin>>arr[i];
        if(!arr[i]) continue;
        ans++;
        int l=(i-len+1)<1?1:(i-len+1);
        int r=(i+len-1)>n?n:(i+len-1);
        //cout<<l<<" "<<r<<endl;
        vis[l]++;
        vis[r+1]--;
    }
    for(int i=1; i<=n; i++) {
        vis[i]+=vis[i-1];
    }
    // for(int i=1; i<=n; i++)
    //    cout<<vis[i]<<" ";
    //cout<<endl;
    for(int i=1; i<=n; i++) {
        if(!vis[i]) {
            cout<<-1;
            return 0;
        }
    }
    for(int i=1; i<=n; i++) {
        int l=(i-len+1)>=1?(i-len+1):1;
        int r=(i+len-1)>n?n:(i+len-1);
        if(vis[l]>=2&&vis[r]>=2) {
            int flag=0;
            for(int j=l+1; j<=r-1; j++) {
                if(vis[j]<2)
                    flag=1;
            }
            if(!flag) {
                //cout<<l<<" "<<r<<endl;
                ans--;
                for(int j=l; j<=r; j++)
                    vis[j]--;
            }

        }
    }
    cout<<ans<<endl;


}
*/

/*
int main()
{
	int t;
	cin>>t;
	while(t--)
    {
        int L,v,l,r;
        cin>>L>>v>>l>>r;
        int ans=0;
        ans=((l-1)/v)+((L/v-(r/v)));
        cout<<ans<<endl;
    }
	return 0;
}
*/

猜你喜欢

转载自blog.csdn.net/intmainhhh/article/details/83034969