Submission #1215510

#TimeUsernameProblemLanguageResultExecution timeMemory
1215510boclobanchatGenetics (BOI18_genetics)C++20
0 / 100
175 ms22088 KiB
#include<bits/stdc++.h>
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int Rand(int l,int r) { return uniform_int_distribution<int>(l,r)(rng); }
const int MAXN=4114;
bitset<MAXN> bt[MAXN][2];
bool ck[MAXN];
int per[MAXN],val[MAXN][MAXN];
int get(int x,int y)
{
	return ((bt[x][0]^bt[y][0])|(bt[x][1]^bt[y][1])).count();
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,m,k;
    cin>>n>>m>>k;
    int cnt=n;
    for(int i=1;i<=n;i++)
    {
    	string s;
    	cin>>s;
    	for(int j=0;j<m;j++)
    	{
    		if(s[j]=='A'||s[j]=='C') bt[i][0][j]=1;
    		if(s[j]=='A'||s[j]=='G') bt[i][1][j]=1;
		}
	}
	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) val[i][j]=-1;
	for(int i=1;i<=n;i++) per[i]=i;
	for(int i=1;i<=n*2;i++) swap(per[Rand(1,n)],per[Rand(1,n)]);
	for(int i=1;i<=n;i++) if(!ck[i])
	{
		bool kc=true;
		for(int j=i+1;j<=n&&kc;j++) if(get(per[i],per[j])!=k) kc=false,ck[j]=true;
		if(kc) return cout<<per[i],0;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...