QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#418542 | #3744. Fixed Point | ZayinCTT# | WA | 519ms | 17076kb | C++11 | 3.0kb | 2024-05-23 14:24:41 | 2024-05-23 14:24:43 |
Judging History
answer
// 那就是希望。
// 即便需要取模,也是光明。
#include <algorithm>
#include <stdio.h>
#include <vector>
typedef long long llt;
typedef unsigned uint;typedef unsigned long long ullt;
typedef bool bol;typedef char chr;typedef void voi;
typedef double dbl;
template<typename T>bol _max(T&a,T b){return(a<b)?a=b,true:false;}
template<typename T>bol _min(T&a,T b){return(b<a)?a=b,true:false;}
template<typename T>T lowbit(T n){return n&-n;}
template<typename T>T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<typename T>T lcm(T a,T b){return(a!=0||b!=0)?a/gcd(a,b)*b:(T)0;}
template<typename T>T exgcd(T a,T b,T&x,T&y){if(b!=0){T ans=exgcd(b,a%b,y,x);y-=a/b*x;return ans;}else return y=0,x=1,a;}
template<typename T>T power(T base,T index,T mod)
{
T ans=1%mod;
while(index)
{
if(index&1)ans=ans*base%mod;
base=base*base%mod,index>>=1;
}
return ans;
}
// Your shadow Gets in the way of my light
uint A[11][100005],T[100005],Id[100005],n,m,q;
uint Mod[2005],tp;
bol B[100005];
std::vector<uint>Cnt[10][2005];
int main()
{
#ifdef MYEE
freopen("QAQ.in","r",stdin);
freopen("QAQ.out","w",stdout);
#endif
while(scanf("%u%u%u",&n,&m,&q)==3&&n&&m&&q)
{
for(uint i=0;i<n;i++)A[0][i]=i;
for(uint i=0;i<m;i++)
{
uint l,r;scanf("%u%u",&l,&r),l--;
for(uint j=0;j<n;j++)A[i+1][j]=A[i][j];
for(uint j=0;j<r-l;j++)A[i+1][r-j-1]=A[i][l+j];
}
for(uint i=0;i<n;i++)B[i]=0;
std::vector<std::pair<uint,uint> >P;
for(uint i=0;i<n;i++)if(!B[i])
{
uint c=0;do B[i]=1,c++,i=A[m][i];while(!B[i]);
P.push_back({c,i});
}
std::sort(P.begin(),P.end()),tp=0;
for(auto s:P)if(!tp||Mod[tp-1]!=s.first)Mod[tp++]=s.first;
for(uint i=0;i<m;i++)
{
for(uint j=0;j<tp;j++)Cnt[i][j].clear();
for(uint j=0;j<n;j++)T[A[i][j]]=j,Id[j]=-1;
uint c=0;
for(auto s:P)
{
if(s.first!=Mod[c])c++;
std::vector<uint>V{s.second};
while(V.size()<s.first)V.push_back(A[m][V.back()]);
for(uint j=0;j<s.first;j++)Id[V[j]]=j;
for(uint j=0;j<s.first;j++)if(~Id[T[V[j]]])
Cnt[i][c].push_back((j-Id[T[V[j]]]+s.first)%s.first);
for(uint j=0;j<s.first;j++)Id[V[j]]=-1;
}
for(uint j=0;j<tp;j++)std::sort(Cnt[i][j].begin(),Cnt[i][j].end());
}
while(q--)
{
uint k;scanf("%u",&k);
uint r=k%m,t=k/m;
uint ans=0;
for(uint i=0;i<tp;i++)
ans+=std::upper_bound(Cnt[r][i].begin(),Cnt[r][i].end(),t%Mod[i])
-std::lower_bound(Cnt[r][i].begin(),Cnt[r][i].end(),t%Mod[i]);
printf("%u\n",ans);
}
}
return 0;
}
// 那就是希望。
// 即便需要取模,也是光明。
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 519ms
memory: 17076kb
input:
100000 10 100000 3135 43886 11880 99989 6753 75994 49859 61511 34135 56769 36040 94909 31157 40208 1045 52859 17015 29390 34992 75590 427894487 754397106 304363104 288735752 794969909 361436976 343784951 800838635 507520362 111733743 43029867 107598330 993009440 179455786 17298032 187551627 96418485...
output:
1055 1055 1056 1056 1055 1786 1055 1055 1055 1055 1055 1055 1785 1055 1055 1055 1055 1056 3371 1785 1055 1055 1060 1055 1055 1055 1785 1056 3371 1785 1056 1055 1055 1055 1068 1055 1055 1055 1785 1055 1056 1785 1056 1057 4101 3372 1055 1055 1060 1056 1056 1056 5342 3372 1055 1785 5088 1785 1785 1055 ...
result:
wrong answer 4th numbers differ - expected: '1057', found: '1056'