compro-library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub ningenMe/compro-library

:warning: non-verified/BinaryColumnEchelonFormalize.cpp

Code

// Column_01Echelon_Formalize O(N) 定数倍重め
vector<long long>  BinaryColumnEchelonFormalize(vector<long long> vec){
	for(int i = 59,idx = -1; 0 <= i; --i,idx = -1){
		sort(vec.begin(),vec.end(),greater<long long>());
		for(int j = 0,flg = 1; j < vec.size(); ++j,flg = 0){
			if( !((vec[j]>>i) & 1) ) continue;
			for(int k = 59; i < k; --k) if((vec[j]>>k) & 1) flg = 1;
			if(flg) continue;
			idx = j;
			break;
		}
		for(int j = 0; idx != -1 && j < vec.size(); ++j) if(idx != j && ((vec[j]>>i) & 1)) vec[j] ^= vec[idx];
	}

	return vec;
}
#line 1 "non-verified/BinaryColumnEchelonFormalize.cpp"

// Column_01Echelon_Formalize O(N) 定数倍重め
vector<long long>  BinaryColumnEchelonFormalize(vector<long long> vec){
	for(int i = 59,idx = -1; 0 <= i; --i,idx = -1){
		sort(vec.begin(),vec.end(),greater<long long>());
		for(int j = 0,flg = 1; j < vec.size(); ++j,flg = 0){
			if( !((vec[j]>>i) & 1) ) continue;
			for(int k = 59; i < k; --k) if((vec[j]>>k) & 1) flg = 1;
			if(flg) continue;
			idx = j;
			break;
		}
		for(int j = 0; idx != -1 && j < vec.size(); ++j) if(idx != j && ((vec[j]>>i) & 1)) vec[j] ^= vec[idx];
	}

	return vec;
}
Back to top page