제출 #1357576

#제출 시각아이디문제언어결과실행 시간메모리
1357576michael12DNA 돌연변이 (IOI21_dna)C++20
0 / 100
18 ms2604 KiB
#include "dna.h"
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<numeric>
#include<string>
#include<stack>
#include<queue>
#include<string.h>
#include<array>
#include<climits>
#include<algorithm>
#include<cmath>
using namespace std;
#define ff first
#define ss second
#define endl '\n'
const int inf = 1e9;
string s, s1;
void init(string a, string b){
    s = a;
    s1 = b;
    return;
}
int get_distance(int x, int y){

    int res = 0;
    map<char, int> M, M1;
    for(int i = x; i <= y; i++){
        M[s[i]] += 1;
        M1[s1[i]] += 1;
    }
    bool is = 1;
    for(auto t : M){
        if(M[t.ff] != M[t.ss]){
            is = 0;
        }
    }
    if(is == 0){
        return -1;
    }
    else{
        map<pair<char, char>, int> mp, mp1;
        for(int i = x; i <= y; i++){
            if(s[i] != s1[i]){
              mp[{s[i], s1[i]}] += 1;
            }
        }
        int rem = 0;
        for(auto t : mp){
            int cnt = min(mp[{t.ff.ff, t.ff.ss}], mp[{t.ff.ss, t.ff.ff}]);
            res += cnt;
            mp[{t.ff.ff, t.ff.ss}] -= cnt;
            mp[{t.ff.ss, t.ff.ff}] -= cnt;
        }
        for(auto t : mp){
            rem += t.ss;
        }
        res += (rem / 3) * 2;
        return res;
    }
    
}
// signed main(){
//     string a, b;
//     cin >> a >> b;
//     init(a, b);
//     cout << get_distance(4, 5);
// }
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…