rt。题目:CF207A1。
Code:
#include<bits/stdc++.h>
using namespace std;
int dp[2005][2005][2];
int n;
int k[3];
long long x,y,a[2005][2005],m;
int duan[2005][2005],cnt[2],now[2];
int pan(long long a,long long b){
if(a>=b)return 0;
return 1;
}
//int cnt=0;
priority_queue<pair<long long,int> >q;
signed main(){
cin>>n;
cin>>k[1]>>a[1][1]>>x>>y>>m;
for(int i=2;i<=k[1];i++){
a[1][i]=(a[1][i-1]*x+y)%m;
if(a[1][i]<a[1][i-1]){
duan[1][++cnt[1]]=i;
}
}
cin>>k[2]>>a[2][1]>>x>>y>>m;
for(int i=2;i<=k[2];i++){
a[2][i]=(a[2][i-1]*x+y)%m;
if(a[2][i]<a[2][i-1]){
duan[2][++cnt[2]]=i;
}
}
duan[1][++cnt[1]]=k[1];
duan[2][++cnt[2]]=k[2];
// cout<<cnt[2]<<endl;
cout<<max(cnt[1],cnt[2])-1<<endl;
for(int i=1;i<=max(cnt[1],cnt[2]);i++){
for(int j=1;j<=n;j++){
// j=2;
// if(cnt[j]<i)continue;
cout<<j<<' '<<i<<endl;
/*
这行比较奇葩:如果输出了,答案除掉这里的输出就是
0
1 1
2 1
3 2
4 2
但是如果没有输出,就是
0
1 1
2 1。
*/
now[j]++;
for(;now[j]<=duan[j][i];now[j]++){
// cout<<j<<' '<<now[j]<<endl;
pair<long long,int>ans;
ans.first=-a[j][now[j]];
ans.second=j;
q.push(ans);
}
}
while(!q.empty()){
cout<<-q.top().first<<' '<<q.top().second<<endl;
q.pop();
}
}
return 0;
}