# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
202894 | karma | Genetics (BOI18_genetics) | C++14 | 467 ms | 17144 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
long long sum[4110][5];
char a[4110][4110];
int convert (char c){
if (c == 'A')
return 0;
if (c == 'C')
return 1;
if (c == 'G')
return 2;
return 3;
}
int check (int x , int n , int m, int k){
int i , j , dif;
for (i=1;i<=n;i++){
if (i == x)
continue;
dif = 0;
for (j=1;j<=m;j++){
if (a[x][j] != a[i][j])
dif++;
if (dif > k)
return 0;
}
if (dif != k)
return 0;
}
return 1;
}
int main()
{
FILE *fin = stdin;
FILE *fout = stdout;
int n , m , k , i , j , curr , summ;
fscanf (fin,"%d%d%d\n",&n,&m,&k);
for (i=1;i<=n;i++){
fgets (a[i] + 1 , 5000 , fin);
for (j=1;j<=m;j++){
sum[j][convert(a[i][j])] = (sum[j][convert(a[i][j])] + i)%MOD;
}
}
for (curr = 1 ; curr <= n ; curr ++){
summ = 0;
for (i=1;i<=m;i++){
summ = (summ + sum[i][0] + sum[i][1] + sum[i][2] + sum[i][3])%MOD;
summ = ((summ - sum[i][convert(a[curr][i])]) % MOD + MOD )%MOD;
}
if (summ == (((long long) k * ( ( ((long long)n * (n+1)) / 2 ) %MOD - curr)%MOD )%MOD + MOD)%MOD && check(curr , n, m , k)) {
fprintf (fout,"%d ",curr);
return 0;
}
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |