解析:
模拟即可,当循环次数过大的时候跳出循环打印 -1
- #include
- using namespace std;
- #define int long long
- const int N=2e5+5;
- int n,x,k1,k2,cnt;
- queue<int>a,b;
- signed main(){
- cin>>n;
- cin>>k1;
- for(int i=1;i<=k1;i++){
- cin>>x;
- a.push(x);
- }
- cin>>k2;
- for(int i=1;i<=k2;i++){
- cin>>x;
- b.push(x);
- }
- while(a.size()&&b.size()){
- cnt++;
- if(cnt>=10000) break;
- int t1=a.front();
- int t2=b.front();
- a.pop(),b.pop();
- if(t1>t2){
- a.push(t2);
- a.push(t1);
- }
- else{
- b.push(t1);
- b.push(t2);
- }
- }
- if(cnt>=10000) printf("-1");
- else{
- printf("%lld %d",cnt,a.size()?1:2);
- }
- return 0;
- }