Submission #404852

#TimeUsernameProblemLanguageResultExecution timeMemory
404852JasiekstrzLanguages (IOI10_languages)C++17
100 / 100
9640 ms183756 KiB
#include<bits/stdc++.h> #include "lang.h" #include "grader.h" #define fi first #define se second using namespace std; ////////////////// //const int N=10; //int L; //int language(int l) //{ // cerr<<l<<"\n"; // return L; //} ///////////////// const long long MOD=1e9+7,B=65537; const int N=100; const int K=5; map<pair<int,long long>,set<int>> mp; pair<int,long long> hsh(int E[],int d) { long long ans=0; for(int i=0;i<=d;i++) { //ans<<=16; //ans+=E[i]; ans=(ans*B+E[i])%MOD; } return make_pair(d,ans); } vector<pair<int,long long>> all_fragments(int E[]) { vector<pair<int,long long>> tmp; for(int d=0;d<K;d++) { for(int i=0;i+d<N;i++) tmp.push_back(hsh(E+i,d)); } return tmp; } void excerpt(int E[]) { vector<pair<int,long long>> t=all_fragments(E); vector<int> cnt(56,0); for(auto v:t) { //cerr<<v.fi<<" "<<v.se<<"\n"; for(auto l:mp[v]) cnt[l]++; } int mx=0,g=0; for(int i=0;i<56;i++) { if(cnt[i]>mx) { mx=cnt[i]; g=i; } } int lang=language(g); for(auto v:t) mp[v].insert(lang); return; } ////////////////////////// //int main() //{ // int n; // cin>>n; // for(int i=1;i<=n;i++) // { // string s; // cin>>L>>s; // int E[N]; // for(int j=0;j<N;j++) // E[j]=s[j]; // excerpt(E); // } // return 0; //} //////////////////////////
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...