Nu aveti permisiuni pentru a descarca fisierul grader_test4.ok
Cod sursa(job #1647744)
Utilizator | Data | 10 martie 2016 21:55:00 | |
---|---|---|---|
Problema | NextSeq | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.13 kb |
#include <cstdio>
#include <algorithm>
#define nmax 10025
using namespace std;
int n,m,p,k,v[nmax],a[nmax],b[nmax];
int s[nmax],sol[nmax];
int binarysearch(int j)
{
int p=0;
for (int bit=1<<13;bit;bit>>=1)
if (p+bit<=n&&j>=v[p+bit])
p+=bit;
return p;
}
int main()
{
int i,j,t;
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d %d %d",&n,&m,&p);
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
sort(v+1,v+n+1);
k=max(m,p);
for (i=1;i<=m;i++) {
scanf("%d",&j);
s[i+k-m]-=binarysearch(j);
}
for (i=1;i<=p;i++) {
scanf("%d",&j);
s[i+k-p]+=binarysearch(j);
}
s[k]--;
sol[0]=1;
for (i=1;i<=k;i++) {
for (j=1;j<=sol[0];j++)
sol[j]*=n;
sol[1]+=s[i];
for (j=1;j<=sol[0]||sol[j]>9;j++)
if (sol[j]>9) {
sol[j+1]+=sol[j]/10;
sol[j]%=10;
}
if (sol[j])
sol[0]=max(sol[0],j);
}
for (i=sol[0];i>=1;i--)
printf("%d",sol[i]);
return 0;
}