比赛 Mister B的奇妙生活 评测结果 AWWAAAAAWW
题目名称 B先生和无聊的游戏 最终得分 60
用户昵称 Ostmbh 运行时间 0.003 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2017-09-08 21:05:40
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int A[30][30];
int B[60][60];
int vis[60];
int c[60];
int main(){
	freopen("MrBA1.in","r",stdin);
	freopen("MrBA1.out","w",stdout);
	int a,b,l,r;
	cin>>a>>b>>l>>r;
	if(b>=a){
		for(int i=1;i<=a;i++)
			c[i]=i;
		for(int i=1;i<=b;i++)
			c[i+a]=a+1;
	}
	else {
		for(int i=1;i<=a;i++)
			c[i]=i;
		for(int i=1;i<=b;i++)
			c[i+a]=a;
		for(int i=1;i<=b;i++)
			c[i+a+b]=i;
		for(int i=1;i<=a-b;i++)
			c[i+a+2*b]=a+i;
		for(int i=1;i<=b;i++)
			c[i+2*a+b]=a+a-b;
	}
	if(b>=a){
		if(r-l+1>=a+b)
			printf("%d\n",a+1);
		else {
			int ans=0;
			int k=l%(a+b);
			int d=a+b-k;
			int len=r-l+1;
			memset(vis,0,sizeof(vis));
			int now=k+1;
			for(int i=0;i<len;i++){
				if(now>a+b)
					now-=a+b;
				if(!vis[c[now]]){
					vis[c[now]]=1;
					ans++;
				}
				now++;
			}
			printf("%d\n",ans);
		}
	}
	else {
		if(r-l+1>=(a+b)*2)
			printf("%d\n",2*a-b+1);
		else {
			int ans=0;
			int k=l%((a+b)*2);
			int d=(a+b)*2-k;
			int len=r-l+1;
			memset(vis,0,sizeof(vis));
			int now=k+1;
			for(int i=0;i<len;i++){
				if(now>(a+b)*2)
					now-=(a+b)*2;
				if(!vis[c[now]]){
					vis[c[now]]=1;
					ans++;
				}
				now++;
			}
			printf("%d\n",ans);
		}
	}
return 0;
}