http://acm.pku.edu.cn/JudgeOnline/problem?id=1083

http://acm.pku.edu.cn/JudgeOnline/images/1083/1083_1.gif

http://acm.pku.edu.cn/JudgeOnline/images/1083/1083_2.gif

Код:
#include <stdio.h>
#include <algorithm>
#include <vector>
using std::pair;
using std::sort;
const int NMAX = 220;
FILE *op=stdin;
FILE *out=stdout;
int T;
int n;
int p;
int check[NMAX];
pair <int,int> a[NMAX];
int cnt;

void inlet()
{
    int i;
    int t;
    fscanf(op,"%d",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(op,"%d %d",&a[i].first,&a[i].second);
        if(a[i].first > a[i].second)
        {
            t = a[i].first;
            a[i].first = a[i].second;
            a[i].second = t;
        }
    }
    for(i=1;i<=n;i++)
    {
        if(a[i].first % 2 == 0)
            a[i].first /= 2;
        else
            a[i].first = a[i].first/2 + 1;
       
        if(a[i].second % 2 == 0)
            a[i].second /= 2;
        else
            a[i].second = a[i].second/2 + 1;
    }
}
void outlet(int c)
{
    fprintf(out,"%d\n",cnt);
}
void work()
{
    int i;
    int s,q;
    p = n;
    sort(a+1,a+n+1);
    cnt = 0;
    memset(check,0,sizeof(check));
    while(1)
    {
        cnt += 10;
        s = 0;
        for(i=1;i<=n;i++)
        {
            if(check[i] == 0 && a[i].first > s)
            {
                p--;
                check[i] = 1;
                s = a[i].second;
                q = i;
            }
        }
        if(p == 0)
            break;
    }
    outlet(cnt);
}

int main()
{
    fscanf(op,"%d",&T);
    int i;
    for(i=1;i<=T;i++)
    {
        inlet();
        work();
    }
}