Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Помогите найти брешь


Автор: chez 26.2.2006, 10:09
url: _http://acm.timus.ru/problem.aspx?space=1&num=1022
Код

#include <stdio.h>    
#include <stdlib.h>    
#include <string.h>    
int k, s, r[120], a, max, re=-1;    
char t[20000];    
int main(){    
    scanf("%d", &k);    
    gets(t);    
    for(int l=0; l<k; l++){    
    gets(t);    
    a=(strlen(t)/2);    
    r[l]=a;    
    }    
    for(int j=0; j<k; j++){    
    for(int i=0; i<k; i++)    
        if(re<r[i]){    
        re=r[i];    
        max=i;    
        if(max<s)    
            for(int u=s+1; u<k; u++)    
            if(re<=r[u]){    
                re=r[u];    
                max=u;    
            }    
        }    
    r[max]=-1;    
    s=max;    
    re=-1;    
    printf("%d ",max+1);    
    }    
     return 0;    
}

Плз, исправьте, если что не так


 ! 
chipset

Закрыта из-за:
1. Мат в названии(fixed).
2. Нечестное отношение к судейству.
3. Открытие темы-дублера.
Спасибо, Chipset.

Автор: Lotrex 26.2.2006, 10:18
Что эта прога делает, тесты - в студию smile

Автор: chez 26.2.2006, 10:21
Вот, что она делает:
http://acm.timus.ru/problem.aspx?space=1&num=1022

а тесты хз какие =)

Если листинг не понятный, то я могу комментарии добавить

Автор: MAKCim 26.2.2006, 10:23
Цитата

Вот, что она делает:
http://acm.timus.ru/problem.aspx?space=1&num=1022

на русском вкратце объяснить можешь (с английским не очень)?

Автор: chez 26.2.2006, 10:30
Genealogical tree
Ограничение времени: 2.0 секунды
Ограничение памяти: 1 000 КБ

Вступление

Система родственных отношений у марсиан достаточно запутана. Собственно говоря, марсиане почкуются когда им угодно и как им угодно, собираясь для этого разными группами, так что у марсианина может быть и один родитель, и несколько десятков, а сотней детей сложно кого-нибудь удивить. Марсиане привыкли к этому, и такой жизненный уклад кажется им естественным.
А вот в Планетарном Совете запутанная генеалогическая система создает серьезные неудобства. Там заседают достойнейшие из марсиан, и поэтому, чтобы никого не обидеть, во всех обсуждениях слово принято предоставлять по очереди, так, чтобы сначала высказывались представители старших поколений, потом те, что помладше, и лишь затем уже самые юные и бездетные марсиане. Однако соблюдение такого порядка на деле представляет собой совсем не простую задачу. Не всегда марсианин знает всех своих родителей, что уж тут говорить про бабушек и дедушек! Но когда по ошибке сначала высказывается праправнук, а потом только молодо выглядящий прапрадед – это настоящий скандал.
Задача

Ваша цель – написать программу, которая определила бы раз и навсегда такой порядок выступлений в Планетарном Совете, который гарантировал бы, что каждый член совета получает возможность высказаться раньше любого из своих потомков.
Исходные данные

В первой строке входных данных к этой задаче находится единственное число N, 1 <= N <= 100 — количество членов Марсианского Планетарного Совета. По многовековой традиции все члены Совета нумеруются натуральными числами от 1 до N. Далее следуют ровно N строк, причем I-тая строка содержит список детей члена Совета с порядковым номером I. Список детей представляет собой последовательность порядковых номеров детей, разделенных пробелами и следующих в произвольном порядке. Список детей может быть пустым. Список детей (даже если он пуст) оканчивается нулем.
Результат

Выход должен содержать последовательность номеров выступающих, разделенных пробелами. Если несколько последовательностей удовлетворяют условиям задачи, то можно вывести любую из них. Гарантируется, что хотя бы одна такая последовательность существует.
Пример исходных данных

5
0
4 5 1 0
1 0
5 3 0
3 0
Пример результата

2 4 5 3 1

Автор: MAKCim 26.2.2006, 10:57
Код

void get(vector<int>& res, const vector<vector<int> >& matrix)
{
    vector<int> parents(matrix.size());
    int s=0;
    for (int i=0; i<matrix.size(); i++)
    {
        for (int j=0; j<matrix[i].size(); j++) parents[matrix[i][j]-1]++, s++;
    }
    while (s)
    {
        int k=0;
        while (k<parents.size() && parents[k]) k++;
        if (k<parents.size())
        {
            res.push_back(k+1);
            for (int i=0; i<matrix[k].size(); i++) parents[matrix[k][i]-1]--, s--;
        } 
    }
}

может код подойдет, твое решение не смотрел

Автор: chez 26.2.2006, 11:08
еп. это еще что за бред? smile =). Сори, но я ниче у тебя тут не понял...
Можно полный пример?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)