Отримання знань

дистанційна підтримка освіти школярів


Перемещение столов
http://acm.pku.edu.cn/JudgeOnline/problem?id=1083

   Входные данные

   Выходные данные

   Пример входных данных

   Пример выходных данных

   Анализ условия и обсуждение идеи решения

   Пример решения на C++:

#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();
}
}

 

Попередня Зміст Наступна
В системі: гості - (1); користувачі - (0)