Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stdio.h>
- #define size 20
- using namespace std;
- int N;
- int flag[size];
- int flag1[size];
- int visit[size];
- int Ballon[size];
- int Arr[size];
- int T;
- int point;
- int Max_Value;
- int sum;
- int val;
- void readCase()
- {
- int i;
- scanf("%d", &N);
- for(i=0; i<N; i++){
- scanf("%d",&Ballon[i]);
- }
- }
- int left(int x)
- {
- int i;
- if(x >= 0){
- //printf("Enter left x is %d\n",x);
- for(i=x; i>=0; i--){
- if(!visit[i]){
- return Ballon[i];
- }
- }
- }else{
- return 0;
- }
- return 0;
- }
- int right(int x)
- {
- int i;
- if(x<N){
- //printf("Enter right x is %d\n",x);
- for(i=x; i<N; i++){
- if(!visit[i]){
- //printf("Enter right Again again\n");
- return Ballon[i];
- }
- }
- }else{
- return 0;
- }
- return 0;
- }
- int solve(int i)
- {
- int l,r;
- visit[i] = 1;
- l = left(i-1);
- //printf("left is %d\n", l);
- r = right(i+1);
- //printf("Right is %d\n",r);
- if(l==0 && r==0){
- sum = sum+0;
- }
- if(l==0 && r>0){
- sum += r;
- }
- if(r==0 && l>0){
- sum += l;
- }
- if(r>0 && l>0){
- sum = sum+(l*r);
- }
- //printf("%d\n",sum);
- return sum;
- }
- void testCase()
- {
- int i;
- sum = 0;
- for(i=0; i<N; i++){
- point = Arr[i];
- //printf("point is %d\n",point);
- val = solve(point);
- //printf("Value is %d\n", val);
- }
- //printf("\n");
- for(i=0;i<N;i++){
- visit[i] = 0;
- }
- if(Max_Value<val){
- Max_Value = sum;
- }
- }
- void initCase(int i)
- {
- int j;
- for(j=0; j<N; j++){
- visit[i] = 0;
- }
- if(i==N){
- testCase();
- return;
- }
- for(j=0; j<N;j++){
- if(0==flag[j]){
- Arr[i] = j;
- flag[j] = 1;
- initCase(i+1);
- flag[j] = 0;
- }
- }
- }
- int main()
- {
- freopen("bal.txt", "r", stdin);
- int i;
- scanf("%d",&T);
- for(i=1;i<=T;i++){
- Max_Value = 0;
- readCase();
- initCase(0);
- printf("Case# %d is %d\n",i, Max_Value);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement