QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#749310 | #9731. Fuzzy Ranking | Kir1same | WA | 2ms | 11760kb | C++20 | 1.8kb | 2024-11-14 23:28:55 | 2024-11-14 23:28:55 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
ll low[N],dfn[N],stk[N],in[N],col[N],top,cnt1,cnt,T,n,k,q;
vector<ll> l[N],r[N],v[N],g[N];vector<ll> s[N];
void dfs(int p)
{
dfn[p]=low[p]=++cnt;
stk[++top]=p;in[p]=true;
for(int i=0;i<g[p].size();i++)
{
int to=g[p][i];
if(!dfn[to])
{
dfs(to);
low[p]=min(low[p],low[to]);
}
else
if(in[to])
low[p]=min(low[p],dfn[to]);
}
if(dfn[p]==low[p])
{
cnt1++;
while(top&&stk[top+1]!=p)
{
col[stk[top]]=cnt1;
in[stk[top--]]=false;
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin>>T;
while(T--)
{
cin>>n>>k>>q;
cnt1=cnt=0;top=0;
for(int i=1;i<=k;i++)
v[i]=vector(n+1,0ll),l[i]=vector(n+1,0ll),r[i]=vector(n+1,0ll),s[i]=vector(n+1,0ll);
for(int i=0;i<=n+1;i++)
g[i].clear(),in[i]=false,col[i]=0,dfn[i]=0,low[i]=0,stk[i]=0;
for(int i=1;i<=k;i++)
for(int j=1;j<=n;j++)
{
cin>>v[i][j];
if(j>1)
g[v[i][j-1]].push_back(v[i][j]);
}
for(int i=1;i<=n;i++)
if(!dfn[i])
dfs(i);
for(int i=1;i<=k;i++)
{
ll num=0;
for(int j=1;j<=n;j++)
{
if(j!=1 && col[v[i][j]]!=col[v[i][j-1]])
{
s[i][j-1]+=1ll*num*(num-1)/2;
for(int x=j-1;x>=j-num;x--)
r[i][x]=j-1,l[i][x]=j-num;
num=0;
}
s[i][j]+=s[i][j-1];
num++;
}
s[i][n]+=1ll*num*(num-1)/2;
for(int x=n;x>=n-num+1;x--)
r[i][x]=n,l[i][x]=n-num+1;
}
ll lasans=0;
while(q--)
{
ll id,l1,r1;ll ans=0;
cin>>id>>l1>>r1;
id=(id+lasans)%k+1;
l1=(l1+lasans)%k+1;
r1=(r1+lasans)%k+1;
if(r[id][r1]==r[id][l1])
ans=(1ll*(r1-l1)*(r1-l1+1)/2);
else
ans=1ll*(r[id][l1]-l1)*(r[id][l1]-l1+1)/2+1ll*(r1-l[id][r1]+1)*(r1-l[id][r1])/2+s[id][l[id][r1]-1]-s[id][r[id][l1]];
cout<<ans<<'\n';
lasans=ans;
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 11760kb
input:
2 5 2 2 1 2 3 4 5 5 4 3 2 1 1 0 2 1 2 1 5 3 3 1 2 3 4 5 1 3 2 4 5 1 2 3 5 4 0 0 2 0 2 3 1 0 3
output:
0 1 1 0 0
result:
wrong answer 1st lines differ - expected: '3', found: '0'