Районная олимпиада по информатике. 2018-2019 учебный год. 8-11 классы
Есеп D. Теңестіру
Жарасханда $N$ саннан тұратын $a$ массивы бар. Жарасхан берілген массивтың әр санына тек бір операция қолдана алады. Операциялардың 3 түрі бар:
- Санға бірді қосу.
- Саннан бірді азайту.
- Санға нөлді қосу.
- $1 \le N \le 2$. $10$ ұпай.
- $1 \le N \le 10^2$ және $1 \le a_{i} \le 10$. $20$ ұпай.
- $1 \le N \le 10^5$ және $1 \le a_{i} \le 2$. $20$ ұпай.
- $1 \le N \le 10^5$ және $1 \le a_{i} \le 10^5$. $50$ ұпай.
7 3 1 4 1 5 9 2Ответ
4Вход
10 1 2 3 4 5 6 7 8 9 10Ответ
3
Комментарий/решение:
#include<bits/stdc++.h>
#define ll long long
#define N 200005
#define MAX 1000000000
#define rt return
#define pr printf
#define vec vector
#define pb push_back
#define sz size()
#define rev reverse
#define srt sort
#define cn continue
#define sc scanf
#define pll pair< ll, ll >
#define ff first
#define ss second
#define dd long double
#define SS stringstream
#define graph g[ a ].pb( b ), g[ b ].pb( a )
#define pause system("PAUSE")
#define off exit( 0 )
#define speed ios_base::sync_with_stdio(); cin.tie(0); cout.tie(0)
using namespace std;
ll n, m[ N ], mx, a[ N ];
int main(){
sc( "%I64d", &n );
for( int i = 0; i < n; i ++ ){
sc( "%I64d", &m[ i ] );
a[ m[ i ] ] ++;
}
if( n <= 2 )
{
if( abs( m[ 0 ] - m[ 1 ] ) <= 1 ) pr( "2" );
else pr( "1" );
return 0;
}
for( int i = 1; i < n - 1; i ++ ){
mx = max( mx, a[ i - 1 ] + a[ i ] + a[ i + 1 ] );
}
pr( "%I64d", mx );
}
#include <bits/stdc++.h>
#define speed ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
using namespace std;
int main() {
speed;
ll n;
cin >> n;
ll ans[100007];
for(ll i = 0; i <= 100007; i++) {
ans[i] = 0;
}
for(ll i = 1; i <= n; i++) {
ll x;
cin >> x;
ans[x]++;
}
ll cnt = 0;
for(ll i = 1; i <= 100006; i++) {
if(cnt < ans[i + 1] + ans[i] + ans[i - 1]) {
cnt = ans[i + 1] + ans[i] + ans[i - 1];
}
}
cout << cnt;
}
}
Возможно, что при неправильном наборе формул, они будут
доредактированы модератором. При этом содержание не будет меняться.