比赛 20120418x 评测结果 WAWAWAWWTWATTT
题目名称 猴子和香蕉 最终得分 28
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-18 17:23:42
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<set>

using namespace std;

struct Node
{
	int x,y;
}A[31];

int N,C,K;
multiset<int>Tree[2];
multiset<int>::iterator it;

int main()
{
	freopen("monkeys.in","r",stdin);
	freopen("monkeys.out","w",stdout);
	scanf("%d%d",&N,&C);
	for(int i=1;i<=C;i++)
		scanf("%d%d",&A[i].x,&A[i].y);
	Tree[0].insert(0);
	for(int i=1;i<=N;i++)
	{
		int k=i&1;
		Tree[k].clear();
		for(it=Tree[!k].begin();it!=Tree[!k].end();it++)
			for(int j=1;j<=C;j++)
				if(!(*it%(A[j].x-1)))
					Tree[k].insert(*it/(A[j].x-1)*A[j].x+A[j].y);
	}
	scanf("%d",&K);
	if(Tree[N&1].size()<K)
		printf("-1\n");
	else
	{
		K=N-K;
		it=Tree[N&1].begin();
		for(int i=1;i<=K;i++,it++);
		printf("%d\n",*it);
	}
	return 0;
}