比赛 |
20120418x |
评测结果 |
AAAAAAATTAATTT |
题目名称 |
猴子和香蕉 |
最终得分 |
64 |
用户昵称 |
TBK |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2012-04-18 16:20:03 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
#include <vector>
#include <set>
#include <algorithm>
#define MAXN 0x7fffffff
using namespace std;
int a[25][2],b,c,d,l,k,x,y;
set<int> s,t[2];
bool bo;
set <int>::iterator m,n,z;
int main(void)
{
freopen("monkeys.in","r",stdin);
freopen("monkeys.out","w",stdout);
scanf("%d%d",&b,&c);
for (d=0;d<c;d++) scanf("%d%d",&a[d][0],&a[d][1]);
scanf("%d",&k);
for (l=0;l<c;l++)
{
s.insert(a[l][1]);
t[bo].insert(a[l][1]);
}
for (x=1;x<b;x++)
{
for (m=t[bo].begin();m!=t[bo].end();m++)
{
y=*m;
for (l=0;l<c;l++)
if (y%(a[l][0]-1)==0)
{
s.insert(y/(a[l][0]-1)*a[l][0]+a[l][1]);
t[!bo].insert(y/(a[l][0]-1)*a[l][0]+a[l][1]);
}
}
t[bo].clear();
bo=!bo;
}
if (k>s.size()) printf("-1");
else
{
if (k<s.size()/2)
{
y=0;
for (m=s.begin();m!=s.end();m++)
{
y++;
if (y==k) break;
}
y=*m;
printf("%d",y);
}
else
{
y=s.size();
for (m=s.end();m!=s.begin();m--)
{
if (y==k) break;
y--;
}
m--;
y=*m;
printf("%d",y);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}