记录编号 |
301299 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2012]寻宝 |
最终得分 |
100 |
用户昵称 |
dateri |
是否通过 |
通过 |
代码语言 |
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(){;}