讨论 / 大家帮忙看一看,这题错误出在哪里
hnlyjdl 2015-10-12 06:35:12
点我顶贴 收藏 删除
#include <cstdio>

#include<iostream>

using namespace std;

#define A 20123

struct lou

{

int a[101];

int b[101];//是否可通向上一层,

int c[101];

int count;

//lou():count(0) {;}

};

int BinarySearch(int *a,int len,int key)

{

int low = 0;

int high = len-1;

while(low<=high)

{

if(low==high)

{

if(a[low]>=key)

return low;

else

return (low+1)%len;

}

int m = (low+high)/2;

if(a[m]==key)

return m;

else if(a[m]>key)

high = m-1;

else

low = m+1;

}

}

int main()

{

//freopen("data.txt","r",stdin);

int n,m,beg,ans;

while(scanf("%d%d",&n,&m)!=EOF)

{

struct lou ceng[n+1];

for(int i=1;i<=n;i++)

{

ceng[i].count = 0;

for(int j=0,l=0;j<=m-1;j++)

{

scanf("%d%d",&ceng[i].b[j],&ceng[i].a[j]);

if(ceng[i].b[j]==1)

{

ceng[i].c[l++] = j;

ceng[i].count++;

} //

}

}

ans=0;

scanf("%d",&beg);

for(int i=1;i<=n;i++)

{

ans = (ans + ceng[i].a[beg])%A;

int pos = BinarySearch(ceng[i].c,ceng[i].count,beg);

ceng[i].a[beg] %= ceng[i].count;

if(ceng[i].a[beg]==0) ceng[i].a[beg] = ceng[i].count;

int t = (pos+ceng[i].a[beg]-1)%ceng[i].count;

beg = ceng[i].c[t];

}

cout<<ans<<endl;

}

return 0;

}

查看更多回复
提交回复