usaco等差数列

#include
#include
#include
#include
#include
using namespace std;
vector g;
int n,m,cnt1,vis[200001],a[200010],cnt;
struct node{
 int x,y;
}s[200001];
bool cmp(node a,node b){
 if(a.y!=b.y) return a.y  return a.x }
int main(){
 scanf("%d%d",&n,&m);
 for(int i=0;i<=m;i++){
  g.push_back(i*i);
  vis[i*i]=true;
 }
 for(int i=0;i   for(int j=0;j    if(!vis[g[i]+g[j]]){
    vis[g[i]+g[j]]=true;
    a[++cnt]=g[i]+g[j];
   }
  }
 }
 for(int i=0;i   a[++cnt]=g[i];
 }
 sort(a+1,a+1+cnt);
 /*for(int i=0;i  cout<  /*for(int i=1;i<=cnt;i++) cout<  cout<  for(int i=1;i<=cnt-n+1;i++){
  for(int k=a[i+1]-a[i];k<=(a[cnt]-a[i])/(n-1);k++){
   int j,now=a[i];
   for(j=2;j<=n;j++){
    if(!vis[now+k]){
     break;
    }
    now+=k;
   }
   if(j==n+1){
    s[++cnt1].x=a[i];
    s[cnt1].y=k;
   }
  }
 }
 sort(s+1,s+1+cnt1,cmp);
 for(int i=1;i<=cnt1;i++){
  cout<  }
 if(cnt1==0){
  cout<<"NONE"<  }
 return 0;
}

你可能感兴趣的:(usaco等差数列)