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';
}
}