Submission #8494

#TimeUsernameProblemLanguageResultExecution timeMemory
8494gs13023Languages (IOI10_languages)C++98
89 / 100
4172 ms84784 KiB
#include<cstdio> #include<string.h> #include"grader.h" #include"lang.h" #define MOD 65536 int lang_freq[60][70000]; long long lang_flow1[60][70000]; long long lang_flow2[60][70000]; long long lang_flow3[60][70000]; long long lang_flow4[60][70000]; long long f1(int a,int b) { return ((a<<3)^b)%MOD; } long long f2(int a,int b,int c) { return ((a<<6)^(b<<3)^c)%MOD; } long long f3(int a,int b,int c,int d) { return ((a<<9)^(b<<6)^(c<<3)^d)%MOD; } long long f4(int a,int b,int c,int d,int e) { return ((a<<12)^(b<<9)^(c<<6)^(d<<3)^e)%MOD; } void excerpt(int *E) { int ans=0; long long ansp=0; long long pos[60]={0}; for(int i=0;i<56;i++) { for(int j=0;j<100;j++) { pos[i]+=lang_freq[i][E[j]]; if(j>0)pos[i]+=lang_flow1[i][f1(E[j-1],E[j])]*10000; if(j>1)pos[i]+=lang_flow2[i][f2(E[j-2],E[j-1],E[j])]*1000001; if(j>2)pos[i]+=lang_flow3[i][f3(E[j-3],E[j-2],E[j-1],E[j])]*10000000001; if(j>3)pos[i]+=lang_flow4[i][f4(E[j-4],E[j-3],E[j-2],E[j-1],E[j])]*10000000001; } if(ansp<pos[i])ansp=pos[i],ans=i; } int lang=language(ans); for(int i=0;i<100;i++) { lang_freq[lang][E[i]]++; if(i>0) { lang_flow1[lang][f1(E[i-1],E[i])]++; } if(i>1) { lang_flow2[lang][f2(E[i-2],E[i-1],E[i])]++; } if(i>2) { lang_flow3[lang][f3(E[i-3],E[i-2],E[i-1],E[i])]++; } if(i>3) { lang_flow4[lang][f4(E[i-4],E[i-3],E[i-2],E[i-1],E[i])]++; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...