|
|
back to boardWhy my program WA ????why why ?? Posted by Михаил 16 Oct 2016 01:12 #include "stdafx.h" #include <iostream> //using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int k1=0,k2=0,n,max,nmax,sum=0,pol=0,k11=0,minraz=10000000; std::cin>>n; int w[20][3]; int graf[20][20]; for(int i=0;i<n;i++){ std::cin>>w[i][0]; w[i][2]=w[i][0]; sum=sum+w[i][0]; } pol=sum/2;
for(int i=0;i<n;i++){ for(int i1=0;i1<n;i1++){ graf[i][i1]=0; }} for(int i=0;i<n;i++){ max=0; nmax=-1; for(int i1=0;i1<n;i1++){ if(max<w[i1][0]){max=w[i1][0];nmax=i1;} } w[nmax][0]=0; for(int i1=0;i1<i+1;i1++){ if(i1==0){if(i==0){graf[i][i1]=max;}else{graf[i][i1]=graf[i-1][i1];}} else{ graf[i][i1]=graf[i-1][i1-1]+max; } } } for(int i=0;i<n;i++){ for(int i1=0;i1<n;i1++){ if((minraz>abs((sum-graf[i][i1])-graf[i][i1])&&(graf[i][i1]!=0))){minraz=abs((sum-graf[i][i1])-graf[i][i1]);} }}
for(int i=0;i<n;i++){ max=0; nmax=-1; for(int i1=0;i1<n;i1++){ if(max<w[i1][2]){max=w[i1][2];nmax=i1;} } if(k1<k2){k1=k1+max;w[nmax][2]=0;w[nmax][1]=1;}else{k2=k2+max;w[nmax][2]=0;w[nmax][1]=2; } if(k11+max<=pol){k11=max+k11;} }
if(abs(k2-k1)<abs(k11-(sum-k11))){ if(abs(k2-k1)<minraz){ std::cout<<abs(k2-k1);}else{std::cout<<minraz;}} else{ if(abs(k11-(sum-k11))<minraz){ std::cout<<abs(k11-(sum-k11));}else{std::cout<<minraz;} } system("pause"); } |
|
|