Submission #138977

#TimeUsernameProblemLanguageResultExecution timeMemory
138977baluteshihLanguages (IOI10_languages)C++14
93 / 100
7887 ms9540 KiB
#include <stdlib.h> #include <stdio.h> #include <vector> #include <unordered_set> #include <bitset> #include <chrono> #define jizz ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define pb push_back #define ET cout << "\n" #define F first #define S second #define MP make_pair #define ALL(v) v.begin(),v.end() #define MEM(i,j) memset(i,j,sizeof i) #define DB(a,s,e) {for(int i=s;i<e;++i) cout << a[i] << " ";ET;} using namespace std; typedef long long ll; #include "grader.h" #include "lang.h" const int SZ=100; const ll P=65537,MOD=1e9+7; vector<int> ap; unordered_set<ll> having[56]; bitset<56> vis; int query(int x) { int rt=language(x); return rt; } int cal(int x,int *E) { int rt=0; for(int i=0;i<SZ;++i) rt+=(having[x].find(E[i])!=having[x].end()); for(int i=0;i+1<SZ;++i) rt+=(having[x].find((ll)E[i]+(ll)E[i+1]*P)!=having[x].end()); for(int i=0;i+2<SZ;++i) rt+=(having[x].find((ll)E[i]+(ll)E[i+1]*P+(ll)E[i+2]*P*P)!=having[x].end())*10; return rt; } void excerpt(int *E) { srand(chrono::system_clock::now().time_since_epoch().count()); int t; if(ap.empty()) t=query(0); else { int mx=-1; for(int i:ap) { int tmp=cal(i,E); if(tmp>mx) mx=tmp,t=i; } t=query(t); } if(!vis[t]) vis[t]=1,ap.pb(t); for(int i=0;i<SZ;++i) having[t].insert(E[i]); for(int i=0;i+1<SZ;++i) having[t].insert((ll)E[i]+(ll)E[i+1]*P); for(int i=0,r;i<18;++i) r=rand()%(SZ-2),having[t].insert((ll)E[r]+(ll)E[r+1]*P+(ll)E[r+2]*P*P); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...