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

Обсуждение задачи 1613. Для любителей статистики

Помогите TLE №6 на C++!!!
Послано Timur 19 сен 2018 15:50
Я перепробовал все методы, чтобы ускорить её, но всё равно моя программа на 0.014 сек медленнее, чем нужно.

#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>

using namespace std;

int main()
{
    int Ia, Sa;
    string O = "";

    scanf("%d", &Ia);
    vector<int> II(Ia, 0);

    for(auto &i:II){
        scanf("%d", &i);
    }

    scanf("%d", &Sa);
    vector<int> ia(3, 0);

    for(int i = 0; i < Sa; ++i){
        scanf("%d%d%d", &ia[0], &ia[1], &ia[2]);
        auto I = II;
        stable_sort(I.begin() + ia[0] - 1, I.begin() + ia[1]);
        if(*(lower_bound(I.begin() + ia[0] - 1, I.begin() + ia[1], ia[2])) == ia[2] && lower_bound(I.begin() + ia[0] - 1, I.begin() + ia[1], ia[2]) != I.begin() + ia[1]) O += '1';
        else O += '0';
    }

    puts(O.c_str());

    return 0;
}
Re: Помогите TLE №6 на C++!!!
Послано ToadMonster 20 сен 2018 13:35
Sort inside tests cycle looks mistake. You drops cities order by it.
My AC solution does 1 cities full sort before tests cycle and 1 lower_bound inside.
Re: Помогите TLE №6 на C++!!!
Послано Timur 20 сен 2018 16:40
I tried make only one full sort, but I lost cities order, but in my solution I sort only range of cities, what change nothing and then reset cities vector. This is very slow, I know it, but I can't make better.
Re: Помогите TLE №6 на C++!!!
Послано ToadMonster 20 сен 2018 17:43
> but I lost cities order
*sigh*

struct city {
  int value;
  int number;
};
Re: Помогите TLE №6 на C++!!!
Послано Timur 26 сен 2018 16:16
But how do you make lower bound with struct?
Re: Помогите TLE №6 на C++!!!
Послано ToadMonster 26 сен 2018 17:35
cin >> l >> r >> x;
city key;
key.number = l;
key.value = x;
auto it = std::lower_bound(cities.begin(), cities.end(), key);
Re: Помогите TLE №6 на C++!!!
Послано Danila 6 ноя 2018 17:45
man, why i have error?
#include <bits/stdc++.h>

using namespace std;
struct sity
{
    int value;
    int number;
};
bool comp (sity l,sity r)
{
    if (l.value==r.value) return l.number<r.number;
    return l.value<r.value;
}
vector <sity> d;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin >> n;
    for (int i=1;i<=n;i++)
    {
        int x;
        cin >> x;
        d.push_back({x,i});
    }
    int m;
    cin >> m;
    sort (d.begin(),d.end(),comp);
    for (int i=1;i<=m;i++)
    {
        int l,r,x;
        cin >> l >> r >> x;
        sity key;
        key.value=x;
        key.number=l;
        auto a1=lower_bound(d.begin(),d.end(),key);
       // cout << *a1.value << endl;
       sity s=*a1;
       if (s.number<=r && s.number>=l)
           cout << 1 ;
        else cout << 0 ;
    }
}
Re: Помогите TLE №6 на C++!!!
Послано ToadMonster 6 ноя 2018 21:02
Your problem is?

I mean I don't like people think I'm a medium.
Compilation error?
WA error?
No error, just want to type something?

Edited by author 06.11.2018 21:03