AOJ 0142 - Nature of Prime Numbers

何かTLEするとおもっていたら,n=1がだめだったようです.
n=1のとき,vのサイズが0です.
(1)の部分を最初for(int i=0;i

#include<iostream>
#include<vector>
#include<algorithm>

int main(){
	int n, arr[5000];
	std::vector<int> v;
	while(std::cin >> n, n){
		std::fill(arr, arr+5000, 0);
		v.clear();

		for(int i=1;i<=(n-1)/2;i++){
			if(std::find(v.begin(), v.end(), i*i%n) == v.end()){//まだない
				v.push_back(i*i%n);
			}
		}

		for(int i=0;i<v.size();i++){//(1)
			for(int j=i+1;j<v.size();j++){
				int value = v[i] - v[j];
				if(value < 0){
					value += n;
				}
				if(value > (n-1)/2){
					value = n - value;
				}
				arr[value]++;
			}
		}

		for(int i=1;i<=(n-1)/2;i++){
			std::cout << arr[i]*2 << std::endl;
		}
	}
}