Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
accept ?#include<iostream> #include<stdlib.h> #include<string.h> using namespace std; int a[64],b[64]; int m,s,f,w; int compare(const void *i,const void *j) {return *(int*)i-*(int*)j;} void fun(int t, int now, int last) { if (f) return; if (t == w-1) { f = 1; } else if (now == s/w) { fun(t + 1, 0, 0); } else if (now < s/w) { for (int i = last + 1; i < m; ++i) if (!b[i]) { b[i] = 1; fun(t, now + a[i], i); if (f) return; b[i] = 0; } } } int done() { memset(b, 0, sizeof(b)); f=0; b[0]=1; fun(0,a[0],0); return f; } int main() { while(cin>>m&&m!=0) { s=0;//int a[m],b[m]; for(int i=0;i<m;i++) {cin>>a[i];s+=a[i];}qsort(a,m,sizeof(int),compare); for(w=m;w>0;w--) { if(s%w==0) { done(); if(done())break; } } cout<<s/w<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator