题意:

n个数 m个公差
找到一个数x并在上面选择一个公差使得这n个数可以用这个x和选择的公差表示。
没有输出No

找到就输出开始时间和公差下标

思路:

1、对x数组求差;

2、对x数组差求GCD;

3、暴力查找p数组有没有GCD%pi==0即公差符合要求

参考代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define ll long long
const int inf = 0x3f3f3f3f;
const int N = 3e5 + 5 ;
using namespace std;
ll a[N], b[N] ;
int main()
{
    int n, m ;
    cin >> n >> m ;
    ll id = 0 ,minn = inf ;
    for(int i = 1 ; i <= n ; i++)
    {
        cin>>a[i];
        if(a[i] < minn)
        {
            minn = a[i] ;
            id = i ;
        }
    }
    sort(a  + 1, a + n + 1 ) ;
    ll x = a[2] - a[1] ;
    for(int i = 3 ; i <= n ; i++)
        x = __gcd(x,a[i] - a[i-1]) ;
    int falg = 0 ;
    for(int i = 1 ; i <= m ; i++)
    {
        cin>>b[i];
        if(x % b[i] == 0 && falg == 0 )
            falg = i ;
    }
    if(falg)
    {
        cout << "YES" << endl ;
        cout << a[1] << " " << falg << endl ;
    }
    else
        cout << "NO" << endl ;
    return 0;
}