[关闭]
@PaulGuan 2016-10-02T10:15:48.000000Z 字数 428 阅读 625

C - The number of positions 题解

Algorithm


题目大意

总共n个人的队列,Petr前面站有至少a个人,Petr后面最多b个人,求Petr有多少种位置的站法 (0<=a,b<n<=100)。

分析

Petr前面至少有a个人,那么Petr最能靠前的位置可能是a+1(为鲁棒性考虑可以判断下a+1和n的大小关系,不过本题的数据范围似乎并不存在这种问题),如果Petr站在a+1的位置上,后面站的人超过了b,那么Petr的位置最前面就只有从n-b开始算,最后的位置一定是n。

代码

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. int main(void)
  5. {
  6. int n,a,b;
  7. cin>>n>>a>>b;
  8. int r=0,l=0;
  9. r=a+1;
  10. l=n;
  11. if(r>l)
  12. {
  13. cout<<"0"<<endl;
  14. return 0;
  15. }
  16. if(r<l-b)
  17. r=l-b;
  18. cout<<l-r+1<<endl;
  19. return 0;
  20. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注