Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
yutr777
5 / 5 / 3
Регистрация: 07.04.2013
Сообщений: 85
#1

Так, норм задачка, гляньте, скажите что да как - C++

13.04.2013, 00:40. Просмотров 446. Ответов 7
Метки нет (Все метки)

Как-то раз Поликарп захотел узнать, кто из секретарей разговаривает по Spyke, а кто — нет. Он выписал для каждого секретаря номер сессии его разговора, или 0, если этот секретарь сейчас не разговаривает по Spyke.

Помогите Поликарпу по этим данным определить, сколько пар секретарей сейчас ведут разговор. Если в данные Поликарпа закралась ошибка, и описанная ситуация никак не могла произойти, требуется сообщить об этом.

Обратите внимание, секретари могут разговаривать по Spyke не только друг с другом — возможны разговоры с внешними собеседниками. Также не разрешены конференции Spyke — то есть в каждом разговоре должны участвовать ровно два собеседника.

Входные данные
В первой строке записано целое число n (1 ≤ n ≤ 103) — количество секретарей в корпорации Поликарпа. В следующей строке записаны n целых чисел через пробел: id1, id2, ..., idn (0 ≤ idi ≤ 109). Число idi равно номеру сессии разговора секретаря номер i, если он разговаривает в данный момент по Spyke, или равно нулю, в противном случае.

Считайте, что секретари пронумерованы от 1 до n некоторым образом.

Выходные данные
Выведите единственное целое число — количество пар секретарей, которые ведут разговор, или -1, если в данные Поликарпа закралась ошибка, и описанная ситуация никак не могла произойти.

Примеры тестов
входные данные
6
0 1 7 1 7 10
выходные данные
2
входные данные
3
1 1 1
выходные данные
-1
входные данные
1
0
выходные данные
0
Примечание
В первом тестовом примере есть два телефонных разговора между секретарями: секретарь номер 2 и секретарь номер 4, секретарь номер 3 и секретарь номер 5.

Во втором тестовом примере описанная ситуация невозможна, так как не разрешены конференции.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <algorithm>
 
typedef long long ll;
 
using namespace std;
 
int main()
{
ll ans=0,n,dl=1,x;
cin >> n;
ll a[10000]={0};
for (int i=0;i<n;i++)
{
    cin >> a[i];
}
sort(a,a+n);
for (int i=1;i<n;i++)
{
    if (a[i]==a[i-1]){dl++;continue;}
    if (a[i]!=a[i-1]){
                      if (dl==2 && a[i-1]!=0){ans++;}
                      if (dl>2 && a[i-1]!=0) {ans=-1;break;} 
                      dl=1;
                      }
}
if (dl==2 && a[n-1]!=0){ans++;}
if (dl>2) {ans=-1;} 
cout << ans;   
return 0;
}
не пашет((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2013, 00:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Так, норм задачка, гляньте, скажите что да как (C++):

Народ гляньте код и подскажите что не так.
Условие: Написать функцию, которая округляет любое вещественное число до...

Ребят, уже запарился, гляньте, что не так!? конструктор копирования и оператор присваивания
#include &lt;iostream&gt; using namespace std; struct SNode { SNode*next;...

скажите пожалуйста что не так?
пишет ошибку &quot;Необработанное исключение в &quot;0x0f3fde8f (msvcr100d.dll)&quot; в...

Скажите, что не так делаю!
Пишет, что ошибка в строчке int T =... #include &lt;cstdlib&gt; #include &lt;iostream&gt;...

скажите что нет так
В двумерном массиве хранятся данные об оценках N студентов по М предметам....

Не работает код, скажите что не так)
вот код немогу понять почему выдает ошыбки. #include &quot;stdafx.h&quot; #include...

7
adm_loro
Заблокирован
13.04.2013, 02:35 #2
так сказать в почти в лоб
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <map>
 
using namespace std;
 
struct cmp 
{
    int cnt;
    cmp():cnt(0){}
    bool operator()(pair<int, int> p) 
    {
        return p.second == 2;
    }
};
 
int main()
{
    int n;
    cin>>n;
    map<int, int> m;
    for(int i = 0; i < n; ++i)
    {
        int t;
        cin >> t;
        --t;
        if(t < 0) continue;
        ++m[t];
        if(m[t] > 2)
        {
            cout << -1 << std::endl;
            system("pause");
            return 0;
        }
    }
    int r = count_if(m.begin(), m.end(), cmp());
    cout <<  r << std::endl;
    system("pause");
    return 0;
}
0
Olivеr
412 / 408 / 95
Регистрация: 06.10.2011
Сообщений: 832
13.04.2013, 02:47 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <map>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "");
    cout << "Секретарей: ";
    unsigned secretaryCount;
    cin >> secretaryCount;
 
    map<unsigned, unsigned> skypeCalls;
 
    unsigned callerID;
    for (size_t i = 0; i!=secretaryCount; i++) {
        cout << "Секретарь №" << i + 1 << ": ";
        cin >> callerID;
        skypeCalls[callerID]++;
    }
 
    unsigned pairsCount(0);
 
    for (map<unsigned, unsigned>::const_iterator it=skypeCalls.begin(); it!=skypeCalls.end(); it++) {
        if (it->second > 2 && it->first) {
            cout << -1;
            return -1;
        } else if (it->second == 2) {
        ++pairsCount;
        }
    }
    cout << pairsCount;
    return 0;
}
0
adm_loro
Заблокирован
13.04.2013, 02:54 #4
[quote=Olivеr;4405714]cout << "Секретарь №" << i + 1 << ":" << endl;[/quote

см. что требуется вывести
Цитата Сообщение от yutr777 Посмотреть сообщение
Выведите единственное целое число
Добавлено через 1 минуту
ты еще гуй прикрути

Добавлено через 3 минуты
вот скажи, чем принципиально отличается твое решение от моего? это я к тому, что нахуя?
0
Olivеr
412 / 408 / 95
Регистрация: 06.10.2011
Сообщений: 832
13.04.2013, 02:58 #5
От того, что страницы сами не обновляются и нет предупреждения о новых ответах при отправке сообщения.
Я начал писать, когда тут твоего кода еще не было.
0
adm_loro
Заблокирован
13.04.2013, 03:00 #6
Olivеr, прости друг, это я с горяча
0
salam
174 / 155 / 28
Регистрация: 10.07.2012
Сообщений: 766
13.04.2013, 05:44 #7
запрещено выкладывать задачи и идеи решения до окончания соревнования...
0
yutr777
5 / 5 / 3
Регистрация: 07.04.2013
Сообщений: 85
13.04.2013, 12:57  [ТС] #8
Цитата Сообщение от salam Посмотреть сообщение
запрещено выкладывать задачи и идеи решения до окончания соревнования...
я знаю....я сдал сам давно на FPC
0
13.04.2013, 12:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2013, 12:57
Привет! Вот еще темы с решениями:

Скажите пожалуйста, что не так с программой
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;cstring&gt; using namespace std;...

Ребят Незнаю что делать при запуске на компилирование выдает ошибку.Кто понимает что не так скажите а если не затруднит исправьте ошибку
Разговаривал с двумя преподами говорят что проект не правильно создавал,хотя...

Скажите пожалуйста, что не так: Почему в выделенной части кода пропускается ввод фамилии?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

С++ задача, надо зациклить, скажите что не так, ошибку выдает в switch, про точку с запятой знаю их вроде не н
{ do { char c; system(&quot;echo Есть три задачи&quot;); system(&quot;echo...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru