Răspuns :
Raspuns:
#include <iostream>
using namespace std;
int n,m,a[103][103],i,j,k;
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]!=a[i][j-1] && a[i][j]!=a[i-1][j] && a[i][j]!=a[i+1][j] && a[i][j]!=a[i][j+1])
k++;
cout<<k<<" ";
return 0;
}
BONUS:
//Problema #1377, rezolvare 100p de Ouroboros
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
long x,MIN=1000000001,MAX=0,nrdiv,contor=1,b,a,n,nr;
ifstream fin("maxd.in");
ofstream fout("maxd.out");
fin>>a>>b;
while(a<=b)
{
nrdiv=1;
x=2;
n=b;
while(n>1)
{
if(x*x>n)
x=n;
if(n%x==0)
{
nr=0;
while(n%x==0)
{
nr++;
n/=x;
}
nrdiv*=nr+1;
}
x=x+1;
}
if(nrdiv>MAX)
{
MAX=nrdiv;
contor=1;
MIN=b;
}
else if (nrdiv==MAX)
{
contor++;
MIN=b;
}
b--;
}
fout<<MIN<<' '<<MAX<<' '<<contor<<'\n';
return 0;
}
//Problema #1131, "Arc", rezolvare 100p de Ouroboros
#include <fstream>
using namespace std;
ifstream fin("arc.in");
ofstream fout("arc.out");
int a[10001],i,k,f[10001],p,n,x,lmax,v;
void v1()
{
int secventa=1;
for(i=1;i<=n;++i)
fin>>a[i];
for(i=2;i<=n;++i)
if(a[i-1]!=a[i])
secventa++;
fout<<secventa<<'\n';
}
void v2()
{
f[1]=1;
k=1;
lmax=1;
fin>>a[1];
for(i=2;i<=n;++i)
{
fin>>x;
if(x==a[k])
f[k]++;
else
{
if(f[k]>lmax)
lmax=f[k];
a[++k]=x;
f[k]=1;
}
}
n=k;
}
void v3()
{
lmax=1;
for(i=1;i<=n;++i)
if(f[i]>lmax)
lmax=f[i],k=i;
i=0;
if(lmax>2)
{
while(k-i>0 && k+i<=n && a[k-i]==a[k+i] && f[k-i]+f[k+i]>2)
i++;
if (k-i>0 and k+i<=n and a[k-i]==a[k+i])
{
f[k-i]+=f[k+i];
for (p=k+i+1;p<=n;++p)
{
a[p-2*i]=a[p];
f[p-2*i]=f[p];
}
n=n-2*i;
}
else
{
for (p=k+i;p<=n;++p)
{
a[p-2*i+1]=a[p];
f[p-2*i+1]=f[p];
}
n=n-2*i+1;
}
}
}
int main()
{
fin>>v>>n;
if(v==1)
v1();
if(v==2)
{ v2();
while(lmax>2)
v3();
int s=0;
for(i=1;i<=n;++i)
s+=f[i];
fout<<s<<'\n';
for(i=1;i<=n;++i)
for (int j=1;j<=f[i];++j)
fout<<a[i]<<'\n';
}
return 0;
}
//Problema #1446, "Memory002", rezolvare 100p de Ouroboros
//Modul de lucru e acelasi ca si la memory005. Practic, citesti din fisier de 2 ori, si declari toate variabilele globale.
//Astfel, utilizezi minimum de memorie, cu 0 in stiva. Nu uita sa folosesti 2 nume diferite pentru prima intrare si pentru a doua
//De exemplu, eu am folosit pentru prima citire "fin" si pentru a doua "fin1".
//Cam atat. Mult succes !
#include <iostream>
#include <fstream>
using namespace std;
int n,x,i,mini=2000000001,maxi=-2000000001,pozmin,pozmax;
long long S;
ifstream fin("memory002.in");
ifstream fin1("memory002.in");
ofstream fout("memory002.out");
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x;
if(x<mini)
mini=x,pozmin=i;
if(x>maxi)
maxi=x,pozmax=i;
}
fin.close();
if(pozmin>pozmax)
swap(pozmin,pozmax);
fin1>>n;
for(i=1;i<pozmin;i++)
fin1>>x;
for(i=pozmin;i<=pozmax;i++)
{
fin1>>x;
S=S+x;
}
fout<<S;
return 0;
}
#include <iostream>
using namespace std;
int n,m,a[103][103],i,j,k;
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]!=a[i][j-1] && a[i][j]!=a[i-1][j] && a[i][j]!=a[i+1][j] && a[i][j]!=a[i][j+1])
k++;
cout<<k<<" ";
return 0;
}
BONUS:
//Problema #1377, rezolvare 100p de Ouroboros
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
long x,MIN=1000000001,MAX=0,nrdiv,contor=1,b,a,n,nr;
ifstream fin("maxd.in");
ofstream fout("maxd.out");
fin>>a>>b;
while(a<=b)
{
nrdiv=1;
x=2;
n=b;
while(n>1)
{
if(x*x>n)
x=n;
if(n%x==0)
{
nr=0;
while(n%x==0)
{
nr++;
n/=x;
}
nrdiv*=nr+1;
}
x=x+1;
}
if(nrdiv>MAX)
{
MAX=nrdiv;
contor=1;
MIN=b;
}
else if (nrdiv==MAX)
{
contor++;
MIN=b;
}
b--;
}
fout<<MIN<<' '<<MAX<<' '<<contor<<'\n';
return 0;
}
//Problema #1131, "Arc", rezolvare 100p de Ouroboros
#include <fstream>
using namespace std;
ifstream fin("arc.in");
ofstream fout("arc.out");
int a[10001],i,k,f[10001],p,n,x,lmax,v;
void v1()
{
int secventa=1;
for(i=1;i<=n;++i)
fin>>a[i];
for(i=2;i<=n;++i)
if(a[i-1]!=a[i])
secventa++;
fout<<secventa<<'\n';
}
void v2()
{
f[1]=1;
k=1;
lmax=1;
fin>>a[1];
for(i=2;i<=n;++i)
{
fin>>x;
if(x==a[k])
f[k]++;
else
{
if(f[k]>lmax)
lmax=f[k];
a[++k]=x;
f[k]=1;
}
}
n=k;
}
void v3()
{
lmax=1;
for(i=1;i<=n;++i)
if(f[i]>lmax)
lmax=f[i],k=i;
i=0;
if(lmax>2)
{
while(k-i>0 && k+i<=n && a[k-i]==a[k+i] && f[k-i]+f[k+i]>2)
i++;
if (k-i>0 and k+i<=n and a[k-i]==a[k+i])
{
f[k-i]+=f[k+i];
for (p=k+i+1;p<=n;++p)
{
a[p-2*i]=a[p];
f[p-2*i]=f[p];
}
n=n-2*i;
}
else
{
for (p=k+i;p<=n;++p)
{
a[p-2*i+1]=a[p];
f[p-2*i+1]=f[p];
}
n=n-2*i+1;
}
}
}
int main()
{
fin>>v>>n;
if(v==1)
v1();
if(v==2)
{ v2();
while(lmax>2)
v3();
int s=0;
for(i=1;i<=n;++i)
s+=f[i];
fout<<s<<'\n';
for(i=1;i<=n;++i)
for (int j=1;j<=f[i];++j)
fout<<a[i]<<'\n';
}
return 0;
}
//Problema #1446, "Memory002", rezolvare 100p de Ouroboros
//Modul de lucru e acelasi ca si la memory005. Practic, citesti din fisier de 2 ori, si declari toate variabilele globale.
//Astfel, utilizezi minimum de memorie, cu 0 in stiva. Nu uita sa folosesti 2 nume diferite pentru prima intrare si pentru a doua
//De exemplu, eu am folosit pentru prima citire "fin" si pentru a doua "fin1".
//Cam atat. Mult succes !
#include <iostream>
#include <fstream>
using namespace std;
int n,x,i,mini=2000000001,maxi=-2000000001,pozmin,pozmax;
long long S;
ifstream fin("memory002.in");
ifstream fin1("memory002.in");
ofstream fout("memory002.out");
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x;
if(x<mini)
mini=x,pozmin=i;
if(x>maxi)
maxi=x,pozmax=i;
}
fin.close();
if(pozmin>pozmax)
swap(pozmin,pozmax);
fin1>>n;
for(i=1;i<pozmin;i++)
fin1>>x;
for(i=pozmin;i<=pozmax;i++)
{
fin1>>x;
S=S+x;
}
fout<<S;
return 0;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Ne dorim ca informațiile furnizate să vă fi fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Revenirea dumneavoastră ne bucură, iar pentru acces rapid, adăugați-ne la favorite!