Time Limit: 1000MS | Memory Limit: 262144KB | 64bit IO Format: %I64d & %I64u |
Description
Nothing has changed since the last round. Dima and Inna still love each other and want to be together. They've made a deal with Seryozha and now they need to make a deal with the dorm guards...
There are four guardposts in Dima's dorm. Each post contains two guards (in Russia they are usually elderly women). You can bribe a guard by a chocolate bar or a box of juice. For each guard you know the minimum price of the chocolate bar she can accept as a gift and the minimum price of the box of juice she can accept as a gift. If a chocolate bar for some guard costs less than the minimum chocolate bar price for this guard is, or if a box of juice for some guard costs less than the minimum box of juice price for this guard is, then the guard doesn't accept such a gift.
In order to pass through a guardpost, one needs to bribe both guards.
The shop has an unlimited amount of juice and chocolate of any price starting with 1. Dima wants to choose some guardpost, buy one gift for each guard from the guardpost and spend exactlyn rubles on it.
Help him choose a post through which he can safely sneak Inna or otherwise say that this is impossible. Mind you, Inna would be very sorry to hear that!
Input
The first line of the input contains integer n (1 ≤ n ≤ 105) — the money Dima wants to spend. Then follow four lines describing the guardposts. Each line contains four integers a, b, c, d (1 ≤ a, b, c, d ≤ 105) — the minimum price of the chocolate and the minimum price of the juice for the first guard and the minimum price of the chocolate and the minimum price of the juice for the second guard, correspondingly.
Output
In a single line of the output print three space-separated integers: the number of the guardpost, the cost of the first present and the cost of the second present. If there is no guardpost Dima can sneak Inna through at such conditions, print -1 in a single line.
The guardposts are numbered from 1 to 4 according to the order given in the input.
If there are multiple solutions, you can print any of them.
Sample Input
10 5 6 5 6 6 6 7 7 5 8 6 6 9 9 9 9
1 5 5
10 6 6 6 6 7 7 7 7 4 4 4 4 8 8 8 8
3 4 6
5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-1
Hint
Explanation of the first example.
The only way to spend 10 rubles to buy the gifts that won't be less than the minimum prices is to buy two 5 ruble chocolates to both guards from the first guardpost.
Explanation of the second example.
Dima needs 12 rubles for the first guardpost, 14 for the second one, 16 for the fourth one. So the only guardpost we can sneak through is the third one. So, Dima can buy 4 ruble chocolate for the first guard and 6 ruble juice of the second guard.
//题意:
小明要把他女朋友约下楼,但宿舍楼有四个门,每个门有两个保安(宿管阿姨),要将女朋友约下来就得贿赂保安,用巧克力或者是果汁可以贿赂保安。每组输入先输入一个n,表示小明有n元钱,接下来是四行,每行有四个数,前两个数表示贿赂第一个阿姨的最便宜的巧克力和果汁的价格,后两个表示贿赂第二个阿姨的最便宜的巧克力和果汁的价格。
现在小明有n元钱,他想知道它是否可以把女朋友约下来,若不能输出-1,否则输出三个数,第一个数是门牌号(总共四个门),第二第三个数分别是贿赂第一个阿姨的花费和第二个阿姨的花费。
HAIT:这个题有个bug,小明一定得把这n元钱都花光(在这块WA了一次)。。
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#define INF 0x3f3f3f3f
#define ull unsigned long long
#define ll long long
#define IN __int64
#define N 100010
#define M 1000000007
using namespace std;
struct zz
{
int a;
int b;int c;int d;
}p[N];
int main()
{
int n,i,j;
int a,b,c,d;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=4;i++)
scanf("%d%d%d%d",&p[i].a,&p[i].b,&p[i].c,&p[i].d);
int flag=0;
for(i=1;i<=4;i++)
{
if(p[i].a+p[i].c<=n)
{
flag=1;
printf("%d",i);
printf(" %d %d\n",p[i].a,n-p[i].a);
}
else if(p[i].a+p[i].d<=n)
{
flag=1;
printf("%d",i);
printf(" %d %d\n",p[i].a,n-p[i].a);
}
else if(p[i].b+p[i].c<=n)
{
flag=1;
printf("%d",i);
printf(" %d %d\n",p[i].b,n-p[i].b);
}
else if(p[i].b+p[i].d<=n)
{
flag=1;
printf("%d",i);
printf(" %d %d\n",p[i].b,n-p[i].b);
}
if(flag)
break;
}
if(!flag)
printf("-1\n");
}
return 0;
}