记录编号 137861 评测结果 WWWAAEEEEE
题目名称 韩信点兵 最终得分 20
用户昵称 Gravatar冷颜少年 是否通过 未通过
代码语言 C++ 运行时间 2.568 s
提交时间 2014-11-05 12:22:36 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
	freopen("HanXin.in","r",stdin);
	freopen("HanXin.out","w",stdout);
	long long n,a[11],b[11],p;
	int m,i,j;
	vector<long long> s,t;
	cin>>n>>m;
	for(i=1;i<=m;i++)
	  cin>>a[i]>>b[i];
	for(i=1;i<=m-1;i++)
	  for(j=1;j<=m-i;j++)
		if(a[j]<a[j+1])
		{
			p=a[j];a[j]=a[j+1];a[j+1]=p;
			p=b[j];b[j]=b[j+1];b[j+1]=p;
		}
	p=a[1]+b[1];
	s.push_back(p);
	while(p<n)
	{
		p+=a[i];
		s.push_back(p);
	}
	if(p>n) s.pop_back();
	for(i=2;i<=m;i++)
	{
		for(j=0;j<s.size();j++)
		  if(s[j]%a[i]==b[i])
			t.push_back(s[j]);
		s=t;
		if(s.empty()) break;
		t.clear();
	}
	if(s.empty()) cout<<-1;
	else cout<<n-s[s.size()-1];
	return 0;
}