HASH IT 질문을 푸는 동안 나는 틀린 대답을 얻고있다. 내가 어디로 잘못 가고 있는지 알 수 없다. 누군가 내 코드가 실패한 테스트 케이스를 제공 할 수 있습니까? 내 코드에해시! 잘못된 대답, 알아낼 수 없다
링크 : 미리 감사는
#include<bits/stdc++.h>
using namespace std;
int main(){
long long int t;
scanf("%lld",&t);
while(t--){
long long int x,i,f=0;
string s,s1;
map<long long int,string> m;
map<string,long long int> m1;
set<long long int> t;
scanf("%lld",&x);
for(i=0;i<x;i++){
s1="";
cin>>s;
long long int j,ans=0;
for(j=4;j<s.length();j++){
ans=(ans+(int)(s[j])*(j-3))%101;
s1+=s[j];
}
if(s[0]=='A'){
ans=(ans*19)%101;
// cout<<ans<<endl;
// cout<<m[ans]<<s<<endl;
if(m[ans].compare(s1)==0 || m[m1[s1]]==s1){ continue; }
else if(m[ans]==""){
m[ans]=s1;
m1[s1]=ans;
f++;
t.insert(ans);
}
else{
long long int count=1;
while(count!=20){
if(m[(ans+(count*count)+(23*count))%101]==""){
m[(ans+(count*count)+(23*count))%101]=s1;
m1[s1]=(ans+(count*count)+(23*count))%101;
t.insert((ans+(count*count)+(23*count))%101);
f++;
break;
}
count++;
}
}
}
else{
if(m[m1[s1]]==s1){
m[m1[s1]]="";
m1[s1]=-1;
--f;
}
else if(m[m1[s1]].length()!=0){
m[m1[s1]]="";
m1[s1]=-1;
f--;
}
}
}
printf("%lld\n",f);
set<long long int>::iterator it;
for(it=t.begin();it!=t.end();it++){
if(m[*it].length()!=0 && m1[m[*it]]!=-1)
cout<<*it<<":"<<m[*it]<<endl;
}
}
return 0;
}
우연히 낮은 품질의 경고를 얻지 못했을 수 있습니다. 코드를 제대로 포맷하지 않아도 작업 한 블록을 피할 수 있습니까? – Deduplicator
특정 질문을하십시오. 이 일이 무엇이고, 무엇이 잘못 되었습니까? – Barmar