ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1901. Космический лифт

Wrong Answer :(
Послано Udit Agarwal 13 окт 2012 20:41
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