寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume16 : 1617 - Almost Identical Programs

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Almost Identical Programs"
https://onlinejudge.u-aizu.ac.jp/problems/1617
・ほとんど同じプログラム
僕が作成、提出したコードは、以下のとおりです。

・Aizu Online Judge in C++ #Volume16 : 1617 - Almost Identical Programs
/*
Aizu Online Judge in C++ #Volume16 : 1617 - Almost Identical Programs
 https://onlinejudge.u-aizu.ac.jp/problems/1617
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
string s,t;
int main(void){
    while(cin>>s,s!="."){
        cin>>t;
        vector<string> a,b;
        string str="";
        for(ll i=0;i<s.size();i++){
            if(s[i]=='"'){
                a.push_back(str);
                str="";
            }else{
                str+=s[i];
            }
        }
        a.push_back(str);
        str="";
        for(ll i=0;i<t.size();i++){
            if(t[i]=='"'){
                b.push_back(str);
                str="";
            }else{
                str+=t[i];
            }
        }
        b.push_back(str);
        ll cnt=(a.size()!=b.size() ? 2 : 0);
        for(ll i=0;i<a.size();i++){
            if(i>=b.size()){
                cnt+=2;
            }else{
                if(a[i]!=b[i]){
                    cnt+=2-i%2;
                }
            }
        }
        cout<<(cnt ? (cnt>1 ? "DIFFERENT\n" : "CLOSE\n") : "IDENTICAL\n");
    }
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/