Submission

Status:

PPPPPPPPPPPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: monpluk

Problemset: Chord and Inversions

Language: cpp

Time: 0.329 second

Submitted On: 2025-10-08 12:08:51

#include <iostream>
#include <vector>
#include <map>
#include <cmath>
using namespace std;

int main(){
    map<string,int> s ={{"C",0},{"C#",1},{"D",2},{"D#",3},{"E",4},{"F",5},{"F#",6},{"G",7},{"G#",8},{"A",9},{"A#",10},{"B",11}};
    vector<string> sn = {"C","C#","D","D#","E","F","F#","G","G#","A","A#","B"},b1(3),b2(3);
    int n,w;
    string temp;
    cin >> n >> w;
    for(int i=0;i<n;i++){
        string a;
        cin >> a;
        int k;
        if(a[a.size()-1] == 'm')
        {
            a.pop_back();
            k = s[a];
            b1[0] = sn[k];
            b1[1] = sn[(k+3)%12];
            b1[2] = sn[(k+7)%12];
        }
        else
        {
            k = s[a];
            b1[0] = sn[k];
            b1[1] = sn[(k+4)%12];
            b1[2] = sn[(k+7)%12];
        }
        if(i == 0)
        {
            for(int j=0;j<w;j++)
            {
                temp = b1[0];
                b1[0] = b1[1];
                b1[1] = b1[2];
                b1[2] = temp;
            }
        }
        else
        {
            vector<int> x(3,0);
            for(int j=0;j<3;j++){
                for(int m=0;m<3;m++){
                    x[j] += min(abs(s[b1[(m+j)%3]]-s[b2[m]]),abs(min(s[b1[(m+j)%3]],s[b2[m]]))+12-max(s[b1[(m+j)%3]],s[b2[m]]));
                }
            }
            int mi = x[0],mii;
            for(int j=0;j<3;j++){
                if(x[j]<mi){
                    mi = x[j];
                }
            }
            for(int j=0;j<3;j++){
                if(x[j] == mi){
                    mii = j;
                    break;
                }
            }
            for(int j=0;j<mii;j++)
            {
                temp = b1[0];
                b1[0] = b1[1];
                b1[1] = b1[2];
                b1[2] = temp;
            }
        }
        for(int j=0;j<3;j++)
        {
            cout << b1[j] << ' ';
            b2[j] = b1[j];
        }
        cout << '\n';
    }
}