SZU4
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> #include <stack> #include <queue> #include <cctype> #include <vector> #include <iterator> #include <set> #include <map> #include <sstream> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define pf printf #define sf scanf #define spf sprintf #define pb push_back #define debug printf("!\n") #define INF 10000 #define MAXN 5010 #define MAX(a,b) a>b?a:b #define blank pf("\n") #define LL long long #define ALL(x) x.begin(),x.end() #define INS(x) inserter(x,x.begin()) #define pqueue priority_queue int n; int mp[100005]; int main() { int i,j; while(sf("%d",&n)==1) { mem(mp,0); for(i=0;i<n;i++) { sf("%d",&mp[i]); } sort(mp,mp+n); if(n==1) { pf("-1\n"); continue; } if(n==2) { int d = mp[1]-mp[0]; if(d==0) { pf("1\n%d\n",mp[0]); } else if(d%2==0) { pf("3\n%d %d %d\n",mp[0]-d,mp[0]+d/2,mp[1]+d); } else { pf("2\n%d %d\n",mp[0]-d,mp[1]+d); } } if(n==3) { int d = mp[1]-mp[0]; int d2 = mp[2]-mp[1]; if(d==d2) { pf("2\n%d %d\n",mp[0]-d,mp[2]+d); } else if(d==d2*2) pf("1\n%d\n",mp[0]+d2); else if(d*2==d2) pf("1\n%d\n",mp[1]+d); else pf("0\n"); } if(n>3) { int cnt=0,cnt2=0,find=0,d2,ok=1,x; int d = mp[1]-mp[0]; for(i=0;i<n-1;i++) { int tmp = mp[i+1]-mp[i]; if(d==tmp) cnt++; else { if(!find) { d2=tmp; find=1; x = i; } if(tmp==d2) cnt2++; else { ok=0;break; } } } if(!ok) { pf("0\n"); continue; } if(cnt==n-1) { pf("2\n%d %d\n",mp[0]-d,mp[n-1]+d); } else if(cnt==n-2) { if(d2==d*2) { pf("1\n%d\n",mp[x]+d); } else pf("0\n"); } else { if(d==d2*2) { pf("1\n%d\n",mp[0]+d2); } else pf("0\n"); } } } }
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> #include <stack> #include <queue> #include <cctype> #include <vector> #include <iterator> #include <set> #include <map> #include <sstream> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define pf printf #define sf scanf #define spf sprintf #define pb push_back #define debug printf("!\n") #define INF 10000 #define MAXN 5010 #define MAX(a,b) a>b?a:b #define blank pf("\n") #define LL long long #define ALL(x) x.begin(),x.end() #define INS(x) inserter(x,x.begin()) #define pqueue priority_queue int n; int a[100005]; map<int,int> mp; int main() { int i,j; while(sf("%d",&n)==1) { mp.clear(); for(i=0;i<n;i++) { sf("%d",&a[i]); mp[a[i]]++; } map<int,int>::iterator it; int res[3],cnt=0,ok=0; for(it=mp.begin();it!=mp.end();it++) { if(it->second) { res[cnt++] = it->first; it->second--; if(cnt==3) { pf("%d %d %d\n",res[2],res[1],res[0]); cnt=0; ok=1; it = mp.begin(); } } } if(!ok) pf("0\n"); } }