Submission #512784

#TimeUsernameProblemLanguageResultExecution timeMemory
512784algorithm16Languages (IOI10_languages)C++14
95 / 100
9760 ms15664 KiB
#include<iostream> #include<set> #include<algorithm> #include "grader.h" #include "lang.h" using namespace std; typedef long long int llint; set <llint> s[65],s1; llint e[105],cnt1[70005]; void excerpt(int *E) { s1.clear(); for(int i=0;i<100;i++) { e[i]=E[i]; cnt1[e[i]]+=1; s1.insert(e[i]); if(i>=50) s1.insert(e[i-1]*1e5+e[i]); //if(i && i%4) s1.insert(e[i-1]*1e5+e[i]); //if(i>1 && i%4==0) s1.insert(e[i-2]*1e10+e[i-1]*1e5+e[i]); } for(int i=1;i<100;i+=e[i]%2+1) { s1.insert(e[i-1]*1e5+e[i]); } for(int i=2;i<100;i+=e[i]%2+1) { s1.insert(e[i-2]*1e10+e[i-1]*1e5+e[i]); } double mx=0; int idx=0; for(int i=0;i<56;i++) { if(s[i].size()<=mx) continue; double cnt=0; for(set <llint>::iterator it=s1.begin();it!=s1.end();it++) { if((*it)<65536) cnt+=(s[i].find(*it)!=s[i].end())*cnt1[(*it)]*0.33; else cnt+=(s[i].find(*it)!=s[i].end()); } if(cnt>mx) { mx=cnt; idx=i; } } int l=language(idx); for(set <llint>::iterator it=s1.begin();it!=s1.end();it++) { s[l].insert(*it); } for(int i=0;i<100;i++) { cnt1[e[i]]-=1; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...