getting the in.txt and out.txt

Admin , can i please get the in.txt and out.txt for BESTBATS. My answer is working correctly for the testcases I have given(verified),but codechef’s judge is reporting wrong answer.

codechef does not provide the test cases.

Here is my code–
#include
#include
#include<stdio.h>
#include
using namespace std;

int main(){
int cases,ways = 1,i,j,n,m,a[11],c[11],e[11],l = 0,t = 0;
vector b,d;
scanf("%i",&cases);

while(t < cases){
for(i = 0 ; i < 11 ; i++){
scanf("%i",&a[i]);
c[i] = 0,e[i] = 0;
}
scanf("%i",&n);

 sort(a,a + 11);

 for(i = 0 ; i < n ; i++){
      b.push_back(a[10 - i]);
 }

 for(i = 0 ; i < 11 - n ; i++){
      d.push_back(a[i]);
 }

// for(i = 0 ; i < n ; i++){
// printf("%i “,b[i]);
// }
// printf(”\n");
// for(i = 0 ; i < 11 - n ; i++){
// printf("%i ",d[i]);
// }

 for(i = 0 ; i < b.size() ; i++){
     for(j = i + 1 ; j < b.size() ; j++){
           if(b[i] == b[j]){
             c[l]++;
             b.erase(b.begin() + j);
             j--;
           }
           else
             break;
     }
     c[l]++;
     l++;
 }

/*
printf(“the b is\n”);
for(i = 0 ; i < l ; i++){
printf("%i “,b[i]);
}
printf(”\nthe c is\n");
for(i = 0 ; i < l ; i++){
printf("%i “,c[i]);
}
printf(”\nthe d is\n");
for(i = 0 ; i < 11 - n ; i++){
printf("%i ",d[i]);
}
*/

l = 0;

 for(i = 0 ; i < b.size() ; i++){
     for(j = 0 ; j < 11 - n ; j++){
          if(b[i] == d[j])
               e[l]++;
     }
     l++;
 }

/*
printf("\nthe e is\n");
for(i = 0 ; i < l ; i++){
printf("%i ",e[i]);
}

 printf("\n");

*/

 for(i = 0 ; i < l ; i++){
     if(e[i] == 0){
        ways = ways*1;
     }
     else{
         m = c[i];
         c[i] = c[i] + e[i];
           for(j = 0 ; j < m ; j++){
              ways = ways*c[i];
              c[i]--;
        }
        ways = (ways)/2 ;
     }
  }

 printf("%i\n",ways);

t++,ways = 1,l = 0,b.clear(),d.clear();
}
return 0;
}

anyone can verify for some test cases by running it.

BESTBATS-codechef easy,no. of successful submissions - 1071

I could not follow your completely, i can figure out that you are thinking very complexly.
Think of it as this :

  1. We need to pick the players in decreasing order of their scores.
  2. If there are x players with the score ‘s’ and we had to pick y more players.
  3. Now if x < y, then update y = y - x, ie. you have to pick them in order to make the largest sum.
  4. If x > y, then you have to any y players from the x players as any y number of them would make the largest sum.

After reading the above points now try to make the code.

Link to your solution is almost always better, especially when you add no comments, just paste the content…

Here it is - http://www.codechef.com/viewsolution/4109275

Correct me, if I’m wrong, but answer for

1
2 2 2 2 2 2 2 2 2 2 2
5

is 332640, your code returns 27720.

Here is ideone link - http://ideone.com/1a2GHR

1 Like