比赛 |
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;
}