• Counting Pair


    Counting Pair

    Time Limit: 1000 ms Memory Limit: 65535 kB Solved: 112 Tried: 1209

    Submit

    Status

    Best Solution

    Back

    Description

     


    Bob hosts a party and invites N boys and M girls. He gives every boy here a unique number Ni(1 <= Ni <= N). And for the girl, everyone holds a unique number Mi(1 <= Mi <= M), too.

    Now when Bob name a number X, if a boy and a girl wants and their numbers' sum equals to X, they can get in pair and dance.

    At this night, Bob will name Q numbers, and wants to know the maxinum pairs could dance in each time. Can you help him?

     

    Input

     



    First line of the input is a single integer T(1 <= T <= 30), indicating there are T test cases.

    The first line of each test case contains two numbers N and M(1 <= N,M <= 100000).

    The second line contains a single number Q(1 <= Q <= 100000).

    Each of the next Q lines contains one number X(0 <= X <= 10^9), indicating the number Bob names.

     

    Output

     

    For each test case, print "Case #t:" first, in which t is the number of the test case starting from 1.

    Then for each number Bob names, output a single num in each line, which shows the maxinum pairs that could dance together.

     

    Sample Input

     

    1
    4 5
    3
    1
    2
    3

     

    Sample Output

     

    Case #1:
    0
    1
    2

     

    Hint

     

    This problem has very large input data. scanf and printf are recommended for C++ I/O.

     

    Source

     

    Sichuan State Programming Contest 2012

     看代码就懂了
     1 #include <iostream>
     2 #include <queue>
     3 #include <vector>
     4 #include <map>
     5 #include <string>
     6 #include <algorithm>
     7 #include <cstdio>
     8 #include <cstring>
     9 #include <cmath>
    10 
    11 using namespace std;
    12 
    13 int T, N, M, Q, s, cnt;
    14 
    15 int main()
    16 {
    17     scanf("%d", &T);
    18     for(int ca = 1; ca <= T; ca++)
    19     {
    20         scanf("%d %d", &N, &M);
    21         scanf("%d", &Q);
    22         printf("Case #%d:
    ", ca);
    23         while(Q--)
    24         {
    25             scanf("%d", &s);
    26             if(s <= 1 || s > M + N) cnt = 0;
    27             else
    28             {
    29                 if(N < M) swap(M, N);
    30                 if(s <= M) cnt = s - 1;
    31                 else if(s > M && s <= N) cnt = M;
    32                 else if(s > N) cnt = M + N - s + 1;
    33             }
    34             printf("%d
    ",cnt);
    35         }
    36     }
    37     return 0;
    38 }
     
  • 相关阅读:
    JavaScript深入之参数按值传递
    计算机网络:这是一份全面 & 详细 的TCP协议学习指南
    前端点击下载excel表格数据
    为什么选择器:last-child有时没有起作用?
    深入理解防抖和节流函数
    收集常用正则表达式
    深入研究-webkit-overflow-scrolling:touch及ios滚动
    一文搞懂网络知识,IP、子网掩码、网关、DNS、端口号
    正则替换replace中$1的用法
    数据库连接池性能对比
  • 原文地址:https://www.cnblogs.com/cszlg/p/3220713.html
Copyright © 2020-2023  润新知