|  | 
|  | 
| back to board | Wrong Answer :( Please some body tell me why i am gettig wrong answer in this. My code is:
 #include <iostream>
 #include <cstdio>
 #include <vector>
 #include <cmath>
 #include <algorithm>
 #include <string>
 #include <cstring>
 #include <string.h>
 #include <cstdlib>
 #include <sstream>
 #include <stack>
 #include <queue>
 #include <numeric>
 #include <utility>
 #include <cctype>
 #include <list>
 #include <climits>
 #include <signal.h>
 #include <ctime>
 #include <map>
 #include <set>
 
 using namespace std;
 #define ll long long int
 ll i, j, k, ct=0, m, n, t, x, y, z, tc, a[200000],s;
 vector<ll> ans;
 int main(){
 
 cin >> n >> s;
 
 for(i = 0; i < n; i++){
 cin >> a[i];
 }
 
 sort(a,a+n);
 
 for ( i = n-1; i > 0 ; i-- ) {
 if ( a[i] + a[i-1] <= s ) {
 break;
 }
 }
 
 //    cout << x << " " << y << endl;
 if(s%2==0){
 x = i+1;
 y = i;
 //z = n-1;
 while ( x < n && y >= 0 ) {
 
 ans.push_back( a[y] );
 ans.push_back( a[x] );
 
 x++;
 y--;
 }
 
 while ( x < n ) {
 ans.push_back( a[x] );
 x++;
 }
 
 
 while ( y >= 0 ) {
 ans.push_back( a[y] );
 y--;
 }
 }
 else {
 y = i;
 
 while ( i < n && a[i] == a[y]){
 ans.push_back( a[i] );
 i++;
 }
 y--;
 x = i;
 while (  x < n && y >= 0 ) {
 
 ans.push_back( a[x] );
 ans.push_back( a[y] );
 
 x++;
 y--;
 }
 while ( x < n ) {
 
 ans.push_back( a[x] );
 x++;
 }
 
 while ( y >= 0 ) {
 ans.push_back( a[y] );
 y--;
 }
 }
 
 
 ct = 0;
 
 for (  i = 0; i < ans.size(); ) {
 if( i == ans.size() - 1){
 ct++;
 i++;
 }
 else{
 if( ans[i] + ans[i+1] <= s){
 ct++;
 i+=2;
 }
 else{
 ct++;
 i++;
 }
 }
 }
 
 cout << ct << endl;
 for (  i = 0; i < ans.size(); i++) {
 cout << ans[i] << " ";
 }
 return 0;
 }
 
 Edited by author 13.10.2012 20:42
 | 
 | 
|