문제가 없어 보이는데
judge에서는 cs[i] >= 0 && cs[i] < k(cs[i]를 참조하는 모든 곳) 이 아닌 경우가 발생해서 런타임에러가 계속뜨네요.
main arr배열에서 누적합을 구했고, 그뒤 k로 나눈 나머지를 집어넣었는데 0보다 작은 경우나 k보다 큰 원소가 나올수있는게 좀 이상하네요..
#include<iostream>#include<vector>#define MOD 20091101typedeflonglongll;usingnamespacestd;voidp1(constvector<int>&cs,constint&n,constint&k){vector<int>modu(k,0);inti;modu[0]=1;for(i=1;i<=n;i++){modu[cs[i]]++;}llsum=0;for(i=0;i<k;i++){sum+=(modu[i]*(modu[i]-1))/2;sum%=MOD;}printf("%lld ",sum);}voidp2(constvector<int>&cs,constint&n,constint&k){vector<int>dp(n+1,0);vector<int>lp(k,-1);inti;lp[0]=0;for(i=1;i<=n;i++){dp[i]=dp[i-1];ints=0;if(lp[cs[i]]!=-1)s=dp[lp[cs[i]]]+1;if(s>dp[i])dp[i]=s;lp[cs[i]]=i;}printf("%d\n",dp[n]);}intmain(){intt;scanf("%d",&t);while(t--){intn,k;scanf("%d%d",&n,&k);inti;vector<int>arr(n+1,0);for(i=1;i<=n;i++){scanf("%d",&arr[i]);arr[i]+=arr[i-1];}for(i=1;i<=n;i++)arr[i]%=k;p1(arr,n,k);p2(arr,n,k);}}
conankun
문제가 없어 보이는데
judge에서는 cs[i] >= 0 && cs[i] < k(cs[i]를 참조하는 모든 곳) 이 아닌 경우가 발생해서 런타임에러가 계속뜨네요.
main arr배열에서 누적합을 구했고, 그뒤 k로 나눈 나머지를 집어넣었는데 0보다 작은 경우나 k보다 큰 원소가 나올수있는게 좀 이상하네요..
9년 전