显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int np[50],nb[50];
int main()
{
freopen("MrBA1.in","r",stdin);
freopen("MrBA1.out","w",stdout);
int a,b,l,r,sum=0;
cin>>a>>b>>l>>r;
if(l==r)
{
cout<<1;
return 0;
}
if(a<=b)
{
if(r-l>=2*a+2*b)
{
cout<<a+1;
return 0;
}
l%=(2*a+2*b);
if(!l)
l=2*a+2*b;
r%=(2*a+2*b);
if(!r)
r=2*a+2*b;
for(int i=1;i<=a;i++)
np[i]=i;
for(int i=a+1;i<=a+b;i++)
np[i]=a;
for(int i=a+b+1;i<=2*a+b-1;i++)
np[i]=i-a-b;
for(int i=2*a+b;i<=2*a+2*b;i++)
np[i]=a+1;
if(l<=r)
{
int sum=0;
for(int i=l;i<=r;i++)
nb[np[i]]=1;
for(int i=1;i<=2*a+2*b;i++)
{
if(nb[i])
sum++;
}
cout<<sum;
return 0;
}
if(l>r)
{
int sum=0;
for(int i=l;i<=2*a+2*b;i++)
nb[np[i]]=1;
for(int i=1;i<=r;i++)
nb[np[i]]=1;
for(int i=1;i<=2*a+2*b;i++)
{
if(nb[i])
sum++;
}
cout<<sum;
return 0;
}
}
if(a>b)
{
if((r-l)>=(2*a+2*b))
{
cout<<2*a-b;
return 0;
}
l%=(2*a+2*b);
if(!l)
l=2*a+2*b;
r%=(2*a+2*b);
if(!r)
r=2*a+2*b;
for(int i=1;i<=a;i++)
np[i]=i;
for(int i=a+1;i<=a+b;i++)
np[i]=a;
for(int i=a+b+1;i<=a+2*b;i++)
np[i]=i-a-b;
for(int i=a+2*b+1;i<=2*a+b;i++)
np[i]=i-2*b;
for(int i=2*a+b+1;i<=2*a+2*b;i++)
np[i]=2*a-b;
if(l<=r)
{
int sum=0;
for(int i=l;i<=r;i++)
nb[np[i]]=1;
for(int i=1;i<=2*a+2*b;i++)
{
if(nb[i])
sum++;
}
cout<<sum;
return 0;
}
if(l>r)
{
int sum=0;
for(int i=l;i<=2*a+2*b;i++)
nb[np[i]]=1;
for(int i=1;i<=r;i++)
nb[np[i]]=1;
for(int i=1;i<=2*a+2*b;i++)
{
if(nb[i])
sum++;
}
cout<<sum;
return 0;
}
}
return 0;
}