A. Free Cash
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int i,ans,n,a,b;
int inp[100][100];
cin>>n;ans=0;
memset(inp,0,sizeof(inp));
for(i=0;i<n;i++)
{
cin>>a>>b;
inp[a][b]++;
if(inp[a][b]>ans) ans=inp[a][b];
}
cout<<ans<<endl;
return 0;
}
B. Young Table
#include<cstdio>
#include<iostream>
using namespace std;
struct data
{
int r,c;
}g[3333];
int a[3333],c[55];
char out[3333][33];
int i,j,k,n,m,t;
int main()
{
while(~scanf("%d",&n))
{
for(i=1;i<=n;++i)
scanf("%d",&c[i]);
m=0;
for(i=1;i<=n;++i)
for(j=1;j<=c[i];++j)
{
scanf("%d",&a[m]);
g[a[m]].r=i,g[a[m++]].c=j;
}
for(t=i=0;i<m;++i)
{
for(k=j=i;j<m;++j)
if(a[j]<a[k])k=j;
if(i!=k)
{
sprintf(out[t++],"%d %d %d %d",g[a[i]].r,g[a[i]].c,g[a[k]].r,g[a[k]].c);
swap(a[i],a[k]);
swap(g[a[i]],g[a[k]]);
}
}
printf("%d\n",t);
for(i=0;i<t;++i)puts(out[i]);
}
return 0;
}
C. Primes on Interval
#include <iostream>
#include <cstring>
using namespace std;
int sub[1000005],data[1000005];
int i,j,a,b,k,l,x;
bool check(int c)
{
for(x=a;x<=b-c+1;x++)
if(data[x+c-1]-data[x-1]<k) return false;
return true;
}
int sovle()
{
int r,l,m,ans=0;
l=1;r=b-a+1;
while(l<=r)
{
m=(l+r)>>1;
if(check(m))
{
ans=m;r=m-1;
}
else l=m+1;
}
if(ans!=0&&check(ans)) return ans;
return -1;
}
int main()
{
memset(sub,0,sizeof(sub));
memset(data,0,sizeof(data));
for(i=2;i<=1e6;i++)
{
if(sub[i]==0)
for(j=i+i;j<=1e6;j+=i)
sub[j]=1;
}
for(i=2;i<=1e6;i++)
{
if(sub[i]==0) data[i]=data[i-1]+1;
else data[i]=data[i-1];
}
cin>>a>>b>>k;
cout<<sovle()<<endl;
return 0;
}