ashutosh singh Ответов: 1

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


вопросы. ссылка

https://www.codechef.com/LTIME64B/problems/JDELAY[^]



#include<bits/stdc++.h>

using namespace std;

int main (void){
	int t,n,input1,input2,count=0;
	cin>>t;
	for(int i=0;i<t;t++){
		cin>>n;
		for(int j=0;j<n;j++){
			cin>>input1;
			cin>>input2;
			if((input2-input1)>5)
			count++;
		}
		cout<<count;
	}
}


Что я уже пробовал:

перепробовал много подходов но так и не смог опуститься ниже отметки в 1сек времени компиляции

CHill60

Конечно же это 1 секунда бежать ограничение по времени не компиляция?

Dave Kreskowiak

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

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

jeron1

Вы уверены, что это ограничение по времени компиляции, а не по времени выполнения, как спрашивал CHill60?
Если это ограничение по времени выполнения, то как быстро вы можете печатать? Вы получаете ввод с клавиатуры каждый цикл, получение данных из файла будет быстрее.

Не уверен, что находится в <bits/stdc++.h>, Но все, что вам нужно, это <iostream> Я верю.

KarstenK

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

1 Ответов

Рейтинг:
0

CPallini

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

using namespace std;

int main (void){
	int t,n, input1, input2;
	cin>>t;
	for(int i=0;i<t;t++){
        int count = 0;
		cin>>n;
		for(int j=0;j<n;j++){
			cin>>input1;
			cin>>input2;
			if((input2-input1)>5)
			count++;
		}
		cout << count << '\n';
	}
}