#include #include #include using namespace std; int sete(); int vorud(); int maxe(int ,int ); int play(int ,int ); void print(int, int , int ); #define max 100 int n; int kart[max]; int sum=0,dif; int record[20][20]; struct m { int first; int second; } ; m path[50][50]; m h; int sete() { for(int i=0;i<20;i++) for(int j=0;j<20;j++) record[i][j]=-1; return 0; } int vorud() { cout<<"tedad kartha :"<>n; cout<<"maghadir:"<>kart[i]; sum+=kart[i]; } sete(); cout<<"www.Ginoo.ir "<b) return a; else return b; } int play(int i,int j) { if (i > j) return 0; else if (j == i){ path[i][j].first=i; path[i][j].second=i; return kart[i]; } if (record[i][j] != -1) return record[i][j]; int s = kart[i] - play(i + 1, j); int k = kart[j] - play(i, j - 1); record[i][j] = maxe(s, k); if (s > k) { path[i][j].first=i+1; path[i][j].second=j; } else { path[i][j].first=i; path[i][j].second=j-1; } return record[i][j]; } void print(int t, int i, int j){ h= path[i][j]; if (t){ if (h.first == i - 1) cout<