记录编号 301299 评测结果 AAAAAAAAAA
题目名称 [NOIP 2012]寻宝 最终得分 100
用户昵称 Gravatardateri 是否通过 通过
代码语言 C++ 运行时间 0.758 s
提交时间 2016-08-31 10:37:21 内存使用 5.34 MiB
显示代码纯文本
#include<cstdio>
const int N=10005,M=105;
bool a[N][M];
int w[N][M],count[N],tmp[N][M],p[N][M];
using namespace std;
inline void in(int &n)
{
	static char c;
	n=0;
	c=getchar();
	while(c>'9'||c<'0')
	  c=getchar();
	do
	  n=(n<<3)+(n<<1)+c-'0',c=getchar();
	while(c>='0'&&c<='9');
}
int ww()
{
	freopen("treasures.in","r",stdin);
	freopen("treasures.out","w",stdout);
	int n,m,i,j,t,ans=0,num;
	in(n),in(m);
	for(i=1;i<=n;i++)
	{
	  for(j=0;j<m;j++)
	  {
	    in(t);
	    if(t==1)
	      count[i]++,a[i][j]=true,p[i][count[i]]=j,tmp[i][j]=count[i];
	    in(w[i][j]);
	  }
	}
	in(j);
	for(i=1;i<=n;i++)
	{
		num=w[i][j];
		ans+=num;
		if(num>=count[i])
		  num%=count[i];
		while(!a[i][j])
		{j++;if(j==m) j-=m;}
		t=tmp[i][j]-1+num;
		if(t>count[i]) t-=count[i];
		if(t<=0) t+=count[i];
		j=p[i][t];
	}
	printf("%d\n",ans%20123);
	return 0;
}
int www=ww();
int main(){;}