Submission #824335

#TimeUsernameProblemLanguageResultExecution timeMemory
824335lto5Genetics (BOI18_genetics)C++17
100 / 100
1680 ms8756 KiB
// https://oj.uz/submission/66598
#include "bits/stdc++.h"
using namespace std;
bitset <4105> P[4][4105];
char s[4105];
int cnt[4][4105];
 
int main(int argc, char const *argv[])
{
	int n, m, k;
	scanf("%d %d %d", &n, &m, &k);
	for(int i = 0; i < n; i++) {
		scanf("%s", s);
		for(int j = 0; j < m; j++) {
			if(s[j] == 'A') {
				P[0][i][j] = 1;
				++cnt[0][j];
			}
			else if (s[j] == 'C') {
				P[1][i][j] = 1;
				++cnt[1][j];
			} else if (s[j] == 'T') {
				P[2][i][j] = 1;
				++cnt[2][j];
			} else {
				P[3][i][j] = 1;
				++cnt[3][j];
			}
		}
	}
	vector <int> v;
	for(int i = 0; i < n; i++) {
		v.push_back(i);
	}
	//random_shuffle(v.begin(), v.end());
	for(int x = 0; x < n; x++) {
		bool bad = false;
		int i = v[x];
 
		int sum = 0;
		for(int y = 0; y < m; y++) {
			if(P[0][i][y] == 1) {
				sum += n - cnt[0][y];
			} else if (P[1][i][y] == 1) { 
				sum += n - cnt[1][y];
			} else if (P[2][i][y] == 1) {
				sum += n - cnt[2][y];
			} else {
				sum += n - cnt[3][y];
			}
		}
		if(sum != (n - 1) * k) continue;
		for(int y = 0; y < n; y++) {
			int j = v[y];
			if(i == j) continue;
			int X = (P[0][i] & P[0][j]).count() +  (P[1][i] & P[1][j]).count() +  (P[2][i] & P[2][j]).count() +  (P[3][i] & P[3][j]).count();
			if((m - X) != k) {
				bad = true;
				break;
			}
		}
		if(!bad) {
			printf("%d\n", i+1);
			exit(0);
		}
	}
	return 0;
}

Compilation message (stderr)

genetics.cpp: In function 'int main(int, const char**)':
genetics.cpp:11:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |  scanf("%d %d %d", &n, &m, &k);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
genetics.cpp:13:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |   scanf("%s", s);
      |   ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...