я пытаюсь решить SPOJ Проблема SUMFOUR .... Я адресность TLE на тестовом примере 9 http://www.spoj.com/problems/SUMFOUR/SPOJ SUMFOUR ..... TLE на тестовом примере 9
Итак, какая часть моего кода должен быть ? отредактирован и как здесь N = 4000 <
#include <iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<map>
#include<vector>
using namespace std;
int main()
{
int a[4005][5],n;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=4;j++)
scanf("%d",&a[i][j]);
int k=0;
for(int i=1;i<=n;i++)
{ int p=a[i][1];
for(int j=1;j<=n;j++)
{ b.push_back(p+a[j][2]);
k++;
}
}
k=0;
for(int i=1;i<=n;i++)
{ int p=a[i][3];
for(int j=1;j<=n;j++)
{ c.push_back(p+a[j][4]);
k++;
}
}
sort(b.begin(),b.end());
int cnt=0;
for(int j=0;j<k;j++)
if(find(b.begin(),b.end(),-c[j])!=b.end())
cnt=cnt+count(b.begin(),b.end(),-c[j]) ;
printf("%d\n",cnt);
return 0;
}
Если вы пишете код на C++, используйте индексы стиля C++ от 0 до n - 1 для ваших векторов. Это 'for (int i = 1; i <= n; i ++)' неудобно смотреть. –
1) пожалуйста, последовательно укажите код для удобочитаемости человека. предложите 4 пробела после каждой открытой скобки '{' и un-indent перед каждой закрывающей скобкой '}'. Обратите внимание, что из-за разных сред есть разные табуляции/ширина, никогда не используя вкладки для отступов. 2) используйте пустую строку для смещения блоков кода для удобочитаемости.3) при запросе пользовательского ввода (cin >> n) всегда префикс с подсказкой cout << "для конкретного ввода" << cend, чтобы пользователь не оставил пустой экран, мигающий курсор и не знал, что делать дальше – user3629249
1) зачем смешивать 'cin' и 'scanf()'? 2) действительно ли вы ожидаете, что пользователь будет вводить до 16000 целых значений? 3) всегда проверяйте возвращаемое значение из scanf(), а не значения параметра, чтобы убедиться, что операция прошла успешно. – user3629249