Neznam kako više ubrzati ovaj program. Bilo kakav savjet će mi pomoći.
--------code follows-------------
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <set>
#include <cstdio>
#include <vector>
#include <map>
using namespace std;
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define FOR(qq,ww,ee) for(int qq=(ww);qq<(ee);++qq)
#define RFOR(qq,ww,ee) for(int qq=(ww);qq>=(ee);--qq)
#define SQ(x) (x)*(x)
int N, sol = 0;
int daske[1000];
map < int, int > mapa;
int main() {
scanf( "%d", &N );
FOR( i, 0, N ) {
scanf( "%d", &daske[i] );
daske[i] *= daske[i];
mapa.insert( mp( daske[i], 1 ) );
}
FOR( i, 0, N-1 )
FOR( j, i+1, N )
if( mapa.count( daske[i] + daske[j] ) )
sol++;
printf( "%d\n", sol );
return 0;
}
--------code follows-------------
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <set>
#include <cstdio>
#include <vector>
#include <map>
using namespace std;
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define FOR(qq,ww,ee) for(int qq=(ww);qq<(ee);++qq)
#define RFOR(qq,ww,ee) for(int qq=(ww);qq>=(ee);--qq)
#define SQ(x) (x)*(x)
int N, sol = 0;
int daske[1000];
map < int, int > mapa;
int main() {
scanf( "%d", &N );
FOR( i, 0, N ) {
scanf( "%d", &daske[i] );
daske[i] *= daske[i];
mapa.insert( mp( daske[i], 1 ) );
}
FOR( i, 0, N-1 )
FOR( j, i+1, N )
if( mapa.count( daske[i] + daske[j] ) )
sol++;
printf( "%d\n", sol );
return 0;
}