The Ball And Cups

At the end of a busy day, The Chef and his assistants play a game together. The game is not just for fun but also used to decide who will have to clean the kitchen. The Chef is a Game Master, so his concern is how to manage the game but not how to win the game
like his assistants do.

The game requires players to find the only ball under one of the N cups after their positions are changed in a special way. At the beginning of the game, The Chef places N cups in a row and put a ball under the C-th
cup from the left (the cups are numbered from 1 to N). All players can see the initial position of the ball. Then Chef performs Q flip operations. Each flip operation is defined by two integers L and R such
that 1 ≤ L ≤ R ≤ N and consists in reversing the segment [L, R] of cups. Namely, Chef swaps L-th and R-th cups, (L+1)-th and (R−1)-th cups, and so on. After
performing all the operations Chef asks his assistants to choose a cup that they think the ball is under it. Who can guess the position of the ball will win the game, and of course, the others will have to clean the kitchen.

The Chef doesn't want to check all the N cups at the end of the game. He notes down the value of C and the pairs (L, R) and asked you, the mastered programmer, to determine the cup that contains the ball.

Input

The first line of the input contains a single integer T, denoting the number of test cases. The description of Ttest cases follows. The first line of each test case contains three space-separated integers NC and Q,
denoting the total number of cups, the initial position of the ball and the number of flip operations Chef will perform. Each of the following Q lines contains two space-separated integers L and R, denoting
the ends of the segment of the current flip operation.

Output

For each test case output on a separate line the final position of the ball.

Constraints

  • 1 ≤ T ≤ 10
  • 1 ≤ N ≤ 100000 (105)
  • 1 ≤ C ≤ N
  • 1 ≤ Q ≤ 10000 (104)
  • 1 ≤ L ≤ R ≤ N

Example

Input:
1
5 2 3
1 4
3 5
1 5 Output:
1

也是个构造数学公式的样例。

这里是过万个输入。故此最优点理一下输入,使得程序能够0ms过。

注意:

1 陷阱 - C会不在[L, R]范围内

2 fread处理输入,记得推断最后输入结束的条件 - fread返回长度为零,否则。尽管能够AC。可是程序是有bug的。

我都使用类当做函数使用了,能够非常好降低变量名的冲突。

#pragma once
#include <stdio.h> class TheBallAndCups
{
int st, len;
static const int BU_MAX = 5120;
char buffer[BU_MAX]; char getFromBuffer()
{
if (st >= len)
{
len = fread(buffer, 1, BU_MAX, stdin);
st = 0;
}
return buffer[st++];
} int scanInt()
{
char c = getFromBuffer();
while (c < '0' || '9' < c)
{
c = getFromBuffer();
}
int num = 0;
while ('0' <= c && c <= '9' && 0 != len)//必需要加0 != len推断输入结束
{
num = (num<<3) + (num<<1) + (c - '0');
c = getFromBuffer();
}
return num;
} public:
TheBallAndCups() : st(0), len(0)
{
int T = 0, N = 0, C = 0, L = 0, R = 0, Q = 0;
T = scanInt();
while (T--)
{
N = scanInt();
C = scanInt();
Q = scanInt();
while (Q--)
{
L = scanInt();
R = scanInt();
if (C < L || R < C) continue;
int M = L + ((R-L)>>1);
if (C <= M)
{
int diff = C - L;
C = R - diff;
}
else
{
int diff = R - C;
C = L + diff;
}
}
printf("%d\n", C);
}
}
}; int theBallAndCups()
{
TheBallAndCups();
return 0;
}

codechef The Ball And Cups题解的更多相关文章

  1. CodeChef November Challenge 2013 部分题解

    http://www.codechef.com/NOV13 还在比...我先放一部分题解吧... Uncle Johny 排序一遍 struct node{ int val; int pos; }a[ ...

  2. codechef February Challenge 2018 简要题解

    比赛链接:https://www.codechef.com/FEB18,题面和提交记录是公开的,这里就不再贴了 Chef And His Characters 模拟题 Chef And The Pat ...

  3. codechef Row and Column Operations 题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  4. codechef January Lunchtime 2017简要题解

    题目地址https://www.codechef.com/LTIME44 Nothing in Common 签到题,随便写个求暴力交集就行了 Sealing up 完全背包算出得到长度≥x的最小花费 ...

  5. codechef January Challenge 2017 简要题解

    https://www.codechef.com/JAN17 Cats and Dogs 签到题 #include<cstdio> int min(int a,int b){return ...

  6. HDU 1556 Color the Ball 线段树 题解

    本题使用线段树自然能够,由于区间的问题. 这里比較难想的就是: 1 最后更新须要查询全部叶子节点的值,故此须要使用O(nlgn)时间效率更新全部点. 2 截取区间不能有半点差错.否则答案错误. 这两点 ...

  7. codechef Sums in a Triangle题解

    Let's consider a triangle of numbers in which a number appears in the first line, two numbers appear ...

  8. codechef Little Elephant and Permutations题解

    The Little Elephant likes permutations. This time he has a permutation A[1], A[2], ..., A[N] of numb ...

  9. codechef Little Elephant and Bombs题解

    The Little Elephant from the Zoo of Lviv currently is on the military mission. There are N enemy bui ...

随机推荐

  1. 批量 修改 android eclipse 项目名

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 最外层的 文件夹名字.

  2. [APIO2007]风铃 --- 贪心

    [APIO2007]风铃 题目描述 你准备给弟弟 Ike 买一件礼物,但是,Ike 挑选礼物的方式很特别:他只喜欢那些能被他排成有序形状的东西. 你准备给 Ike 买一个风铃.风铃是一种多层的装饰品, ...

  3. java 环境变量设定

    ​     1   新建系统环境  新建  弹出“新建系统变量”对话框,分别输入变量名“JAVA_HOME”和变量值(java安装路径)“C:\Java\jdk1.7.0_03”,其中变量值是笔者的J ...

  4. bzoj 1009: [HNOI2008]GT考试 -- KMP+矩阵

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数X1X2.. ...

  5. 高斯消元法求解异或方程组: cojs.tk 539.//BZOJ 1770 牛棚的灯

    高斯消元求解异或方程组: 比较不错的一篇文章:http://blog.sina.com.cn/s/blog_51cea4040100g7hl.html cojs.tk  539. 牛棚的灯 ★★☆   ...

  6. 树形DP--codevs 1380 没有上司的舞会

    codevs 1380 没有上司的舞会 变式题目:给定一棵树每个点有一个点权,求一个独立集使得点权和最大,树上的独立集指的是选取树上的点,使尽量多的点不直接相连  时间限制: 1 s  空间限制: 1 ...

  7. 某DP题目2

    题意: 有一个栈,有n个数1~n按顺序插进栈中,但弹出顺序不定.另有m个限制,表示为a b,即数a必须在数b弹出之前弹出.问有多少种弹出的方案数.n <= 300,m <= 90000 分 ...

  8. MYSQL学习笔记 (四)GROUP BY与HAVING用法

    注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里. 1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用 group ...

  9. ubuntu 关闭n卡

      ubuntu对n卡支持不好,电脑耗电和发汤,把它关闭掉   #sudo add-apt-repository ppa:bumblebee/stable#sudo apt-get update#su ...

  10. linux ntfs模块

    步骤: 1.在/usr/src/linux-2.4.18-3/configs/目录下 找适合自己机器的内核配置文件.我用的kernel-2.4.18-x86_64.config,把它拷贝到/usr/s ...