UVa10123 No Tipping

简介: UVa10123 No Tipping
#include <stdio.h>#include <string.h>intL, M, N, find;
intC, lenl, lenr;
structnode{
intl, w;
} left[30], right[30], res[30];
intis_ok(intl, intr)
{
intlsum=0, rsum=0;
inti;
for (i=0; i<l; i++)
    {
lsum+= (-left[i].l*2-3) *left[i].w;
    }
for (i=0; i<r; i++)
    {
rsum+= (right[i].l*2+3) *right[i].w;
    }
rsum+=C;
if (lsum>rsum) return0;
lsum=0, rsum=0;
for (i=0; i<l; i++)
    {
lsum+= (-left[i].l*2+3) *left[i].w;
    }
for (i=0; i<r; i++)
    {
rsum+= (right[i].l*2-3) *right[i].w;
    }
lsum+=C;
if (rsum>lsum) return0;
return1;
}
voiddfs(intcur, intl, intr)
{
inti;
if (cur==N)
    {
for (i=cur-1; i>=0; i--)
printf("%d %d\n", res[i].l, res[i].w);
find=1;
return;
    }
for (i=l; i<lenl; i++)
    {
if (is_ok(i, r) &&!find)
        {
res[cur].l=left[i].l;
res[cur].w=left[i].w;
dfs(cur+1, i+1, r);
        }
elsebreak;
    }
for (i=r; i<lenr; i++)
    {
if (is_ok(l, i) &&!find)
        {
res[cur].l=right[i].l;
res[cur].w=right[i].w;
dfs(cur+1, l, i+1);
        }
elsebreak;
    }
}
intmain()
{
#ifndef ONLINE_JUDGEfreopen("d:\\UVa\\uva_in.txt", "r", stdin);
#endifintcas=1;
inti, j;
intu, v;
structnodetem;
while (scanf("%d%d%d", &L, &M, &N) &&L+M+N)
    {
lenl=lenr=0;
for (i=0; i<N; i++)
        {
scanf("%d%d", &u, &v);
if (u<0)
            {
left[lenl].l=u;
left[lenl++].w=v;
            }
else            {
right[lenr].l=u;
right[lenr++].w=v;
            }
        }
for (i=1; i<lenl; i++)
        {
for (j=0; j<lenl-i; j++)
            {
if ((-left[j].l*2-3) *left[j].w> (-left[j+1].l*2-3) *left[j+1].w)
                {
tem=left[j];
left[j] =left[j+1];
left[j+1] =tem;
                }
            }
        }
for (i=1; i<lenr; i++)
        {
for (j=0; j<lenr-i; j++)
            {
if ((right[j].l*2-3) *right[j].w> (right[j+1].l*2-3) *right[j+1].w)
                {
tem=right[j];
right[j] =right[j+1];
right[j+1] =tem;
                }
            }
        }
C=3*M;
printf("Case %d:\n", cas++);
find=0;
dfs(0, 0, 0);
if (!find) printf("Impossible\n");
    }
return0;
}
目录
相关文章
Uva10001 Garden of Eden
Uva10001 Garden of Eden
41 0
UVa11968 - In The Airport
UVa11968 - In The Airport
50 0
|
存储 固态存储
|
机器学习/深度学习
uva 12470 Tribonacci
点击打开uva12470  思路: 矩阵快速幂 分析: 1 裸题 代码: /************************************************ * By: chenguolin ...
983 0
|
机器学习/深度学习 人工智能
uva 10870 Recurrences
点击打开uva 10870 思路:构造矩阵+矩阵快速幂 分析: 1 题目给定f(n)的表达式 f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n -3) + .
727 0
uva 1160 X-Plosives
点击打开链接uva 1160 思路: 并查集 分析: 1 看懂题目之和就是切菜了 代码: #include #include #include #include using namespace std; const int MAXN...
765 0
|
JavaScript 定位技术
uva 10047 - The Monocycle
点击打开链接uva 10047 思路:bfs 分析: 1 题目给定一个起始的状态然后要求是否可以到达目标状态 2 这些状态包括了位置,方向,底面颜色。
843 0
|
安全
UVA3644
题意:有一些简单化合物,每个化合物都由两种元素组成,每个元素用一个大写字母组成,你是一个装箱工人,从实验员那里按照顺序依次把一些简单化合物装到车上,但是这里存在一个安全隐患,如果车上存在k个简单化合物,正好包含k中元素,那么他们将组成一个易爆易燃的化合物,为了安全起见,每当你拿到一个化合物的时候,如果他和已装车的化合物形成易爆化合物,你就应当拒绝装车,否则就应该装车,编程输出有多少个没有装车的化合物。
514 0