powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрое чтение и разбор файла
25 сообщений из 158, страница 4 из 7
Быстрое чтение и разбор файла
    #39404670
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1что говорит о выразительности языка ...
Питон он вообще заточен под подобные задачи. С плюсами просто всё понятно. А в Java у нас ООП. Только объекты и методы.

Была идея прорешать все задачи на java чисто в функциональном стиле ... но очень многие решения не проходят в таком стиле по памяти и времени :( Это печалит ...
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404680
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размер кода: 199 ! максимум.
https://acmp.ru/index.asp?main=task&id_task=1
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        try (Scanner i = new Scanner(System.in);
                PrintWriter o = new PrintWriter(System.out)) {
        o.println(i.nextInt() +i.nextInt());
        }
    }
}
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404682
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok Два, как сказано выше, char* в сях и String не развнозначные классы. Чтобы сказать сколько символов в char*, надо затратить некоторое время, чтобы их подсчитать (и с учетом кодировки, побайтовая длина не подходит), а String тратит это время на этапе создания.
Вы путаете реализацию языка и библиотеки!
Начнем с того, что char* это ни разу не класс, а указатель!
Для примера вопрос - на какой тип указывает указатель void*?

chabapok Плюсы вообще, насколько знаю, не умеют работать с utf-8
Это равносильно заявлению, что ключем 10х12 нельзя ремонтировать автомобили Хонда.
Плюсам глубоко фиолетово на кодировку, они работают с байтами, словами и другими типами.
Работа с кодировками это прерогатива программиста. Что накодит, то и получит.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404691
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.print(in.nextInt() + in.nextInt());
    }
}
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404805
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner i = new Scanner(System.in);
        System.out.print(i.nextInt() + i.nextInt());
    }
}



144
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404830
alexanderer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Atum1,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
import java.util.*;

public class Main{
    public static void main(String[] a){
        Scanner i = new Scanner(System.in);
        System.out.print(i.nextInt() + i.nextInt());
    }
}

:)
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404831
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 размер 300
Слишком много букафф пишешь. :)
D 300 включая пробелы влезяет и посложнее задача
Код: java
1.
public class T41{public static void main(String[] s){int a[]=new int[201];try(java.util.Scanner i=new java.util.Scanner(System.in);){for(int j=i.nextInt();j-->0;)a[i.nextInt()+100]++;}catch(Exception e){}for(int i=-1;i++<200;){for(int j=0;j++<a[i];){System.out.print(i-100);System.out.print(' ');}}}}


И то можно лишние проверки убрать :) Можно и конкатенакцию вернуть.
Пускается и с -Xmx1m -XX:MaxMetaspaceSize=2368K на 32-хбитной 8-ке
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404846
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1
144

public у класса не нужен, так как мы в рутовом пакете - это -6
args заменить на одну букву - 3
итого - 135
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404864
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczpublic у класса не нужен, так как мы в рутовом пакете - это -6
args заменить на одну букву - 3
итого - 135
А еще имя класса уменьшить - вообще рекордсменом станет. :)
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404867
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевА еще имя класса уменьшить - вообще рекордсменом станет. :)
Ты условия, по ходу, не читал. Имя класса - Main. Пробелы, табы и переносы строк при подсчете не участвуют.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404875
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAtum1 размер 300
Слишком много букафф пишешь. :)
D 300 включая пробелы влезяет и посложнее задача
Код: java
1.
public class T41{public static void main(String[] s){int a[]=new int[201];try(java.util.Scanner i=new java.util.Scanner(System.in);){for(int j=i.nextInt();j-->0;)a[i.nextInt()+100]++;}catch(Exception e){}for(int i=-1;i++<200;){for(int j=0;j++<a[i];){System.out.print(i-100);System.out.print(' ');}}}}


И то можно лишние проверки убрать :) Можно и конкатенакцию вернуть.
Пускается и с -Xmx1m -XX:MaxMetaspaceSize=2368K на 32-хбитной 8-ке

не проходит... видимо Scanner очень медленная хрень .
11 Time limit exceeded 2,177 6,9 Мб

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
import java.util.*;

public class Main {

    public static void main(String[] s) {
        int a[] = new int[201];
        try (java.util.Scanner i = new Scanner(System.in);) {
            for (int j = i.nextInt(); j-- > 0;) {
                a[i.nextInt() + 100]++;
            }
        } catch (Exception e) {
        }
        for (int i = -1; i++ < 200;) {
            for (int j = 0; j++ < a[i];) {
                System.out.print(i - 100);
                System.out.print(' ');
            }
        }
    }
}
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404877
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТы условия, по ходу, не читал. Имя класса - Main.
Это я не прочел - оно ж в решении всплыло и именно для java.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404882
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев

(Время: 2 сек. Память: 16 Мб Сложность: 29%)
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404885
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1не проходит... видимо Scanner очень медленная хрень .

Попробуй в буфер завернуть in и out.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404890
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСергей АрсеньевА еще имя класса уменьшить - вообще рекордсменом станет. :)
Ты условия, по ходу, не читал. Имя класса - Main. Пробелы, табы и переносы строк при подсчете не участвуют.

Бинго :)

Код: java
1.
2.
3.
4.
5.
6.
7.
import java.util.*;
class Main {
    public static void main(String[] a) {
        Scanner i = new Scanner(System.in);
        System.out.print(i.nextInt() + i.nextInt());
    }
}



135

pascal 33 python 34

135:33 = 4 !


к вопросу о языках

https://habrahabr.ru/company/alconost/blog/197146/
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39404897
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1[11 Time limit exceeded 2,177 6,9 Мб

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
import java.util.*;

public class Main {

    public static void main(String[] s) {
        int a[] = new int[201];
        try (Scanner i = new Scanner(System.in);) {
            for (int j = i.nextInt(); j-- > 0;) {
                a[i.nextInt() + 100]++;
            }
        } catch (Exception e) {
        }
        for (int i = -1; i++ < 200;) {
            for (int j = 0; j++ < a[i];) {
                System.out.print(i - 100);
                System.out.print(' ');
            }
        }
    }
}



видимо есть какой-то вырожденный случай :

1)где долго работает Scanner
2)сложность O(n^2) в цикле где 2 фора.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405018
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1видимо есть какой-то вырожденный случай :
Сканер на миллионе чисел сработает долго и у меня (регэксп внутри).
Но дольше System.out.
Если сделать через StringBuilder то букв больше
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
import java.util.*;
public class T{
 static final int a[]=new int[201];
 public static void main(String[] s){
  try (Scanner i=new Scanner(System.in);){
   i.nextInt();
   for(;;)a[i.nextInt()+100]++;
  }catch (Exception e){}
  for(int i=-1;i++<200;){
   StringBuilder b=new StringBuilder();
   for(int j=0;j++<a[i];)b.append(i-100).append(' ');
   System.out.print(b);
  }
 }
}
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405031
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя без catch оно даже меньше
Код: java
1.
2.
3.
Scanner i=new Scanner(System.in);
i.nextInt();
while(i.hasNext())a[i.nextInt()+100]++;
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405033
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1видимо есть какой-то вырожденный случай :
1)где долго работает Scanner
2)сложность O(n^2) в цикле где 2 фора.
Буферизацию может таки добавим?
Худший случай это максимум значений "-100". Этот случай даёт самые длинные входные и выходные файлы. Плюс максимальное количество циклов вывода = (n * 2) - 1. Как там нарисовать O(n^2) - мне не понятно.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405040
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

В StringBuilder стоит capacity добавить. ХЗ как они там память считают. Но строка в 5млн символов это уже 10Мб при потолке в 16.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405069
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1видимо есть какой-то вырожденный случай :
1)где долго работает Scanner
2)сложность O(n^2) в цикле где 2 фора.
Буферизацию может таки добавим?
Худший случай это максимум значений "-100". Этот случай даёт самые длинные входные и выходные файлы. Плюс максимальное количество циклов вывода = (n * 2) - 1. Как там нарисовать O(n^2) - мне не понятно.


пробовал - вылетает по памяти на 9 тесте .

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
import java.util.*;
class Main{
 static final int a[]=new int[201];
 public static void main(String[] s){
  try (Scanner i=new Scanner(System.in);){
   i.nextInt();
   for(;;)a[i.nextInt()+100]++;
  }catch (Exception e){}
  for(int i=-1;i++<200;){
   StringBuilder b=new StringBuilder();
   for(int j=0;j++<a[i];)b.append(i-100).append(' ');
   System.out.print(b);
  }
 }
}


по времени
11 Time limit exceeded 2,147 39 Мб
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405096
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Код: java
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.
import static java.lang.System.*;

class Main{
    public static void main(String[] x) throws Exception {
        byte[] a = new byte[201];
        int b;
        int v = 0;
        boolean n = false;
        while (in.read() != '\n');
        while (true){
            b = in.read();
            if(b == '-') {
                n = true;
            } else if(b >= '0' && b <= '9'){
                if(v > 0){
                    v *= 10;
                }
                v += b - '0';
            } else {
                if(n){
                    v = 0 - v;
                }
                a[v + 100]++;
                v = 0; n = false;
                if(b == -1) break;
            }
        }
        for (int i = -1; i++ < 200;) {
            for (int j = 0; j++ < a[i];) {
                out.print(i - 100);
                out.print(' ');
            }
        }
    }
}
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405106
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1,

Код: java
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.
import static java.lang.System.*;

class Main{
    public static void main(String[] x) throws Exception {
        byte[] a = new byte[201];
        int b;
        int v = 0;
        boolean n = false;
        while (in.read() != '\n');
        while (true){
            b = in.read();
            if(b == '-') {
                n = true;
            } else if(b >= '0' && b <= '9'){
                if(v > 0){
                    v *= 10;
                }
                v += b - '0';
            } else {
                if(n){
                    v = 0 - v;
                }
                a[v + 100]++;
                v = 0; n = false;
                if(b == -1) break;
            }
        }
        for (int i = -1; i++ < 200;) {
            for (int j = 0; j++ < a[i];) {
                out.print(i - 100);
                out.print(' ');
            }
        }
    }
}



Тест Результат Время Память
1 Wrong answer 0,191 725 Кб
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405114
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Если по скорости пролезет - синтаксис можно немного ужать чтобы в топ выйти. В if/else стоит числа проверять до знака, так как они по статистике должны быть чаще.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405119
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пережал до 320. Над циклом вывода сильно не думал. Может там ещё что-то можно почикать...

Код: java
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.
class Main{
    public static void main(String[] x) throws Exception {
        byte[] a = new byte[201];
        int b, v = 0, n = 1;
        while (System.in.read() != 10);
        for(;;){
            b = System.in.read();
            if(b == 45) {
                n = -1;
            } else if(b >= 48 & b <= 57){
                if(v > 0){
                    v *= 10;
                }
                v += b - 48;
            } else {
                v *= n;
                a[v + 100]++;
                v = 0;
                n = 1;
                if(b < 0) break;
            }
        }
        for (b = -1; b++ < 200;) {
            for (v = 0; v++ < a[b];) {
                System.out.print(b - 100 + ' ');
            }
        }
    }
}
...
Рейтинг: 0 / 0
25 сообщений из 158, страница 4 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрое чтение и разбор файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]