Я тут написал код, вроде все правильно но компилятор c++ 14 выводит:
error: 'vector' does not name a type
In function 'int main()':
error: 'min' was not declared in this scope
Код:
#include<bits/stdc++.h>
#include<vector>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ll N = 1e5 + 5;
const ll MAX = 2e5 + 123;
const ll MOD = 1e9 + 7;
ll n, s, mn = MAX, a[ N ];
vector< ll > v;
int main()
{
scanf( "%I64d", &n );
for( ll i = 1; i <= n; i ++ )
{
scanf( "%I64d", &a[ i ] );
s += a[ i ];
mn = min( mn, a[ i ] );
}
if( a[ 1 ] < s / 2 || mn > a[ 1 ] / 2 )
return printf( "0\n0" ), 0;
for( ll i = 2; i <= n; i ++ )
{
if( a[ 1 ] / 2 >= a[ i ] )
v.push_back( i );
}
cout << v.size() << '\n';
for( ll i = 0; i < v.size(); i ++ )
cout << v[ i ] << ' ';
}
Не хватает подключения пространства имён std:
#include<bits/stdc++.h>
#include<vector>
using namespace std; // Этой строки не хватало
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ll N = 1e5 + 5;
const ll MAX = 2e5 + 123;
const ll MOD = 1e9 + 7;
ll n, s, mn = MAX, a[ N ];
vector< ll > v;
int main()
{
scanf( "%I64d", &n );
for( ll i = 1; i <= n; i ++ )
{
scanf( "%I64d", &a[ i ] );
s += a[ i ];
mn = min( mn, a[ i ] );
}
if( a[ 1 ] < s / 2 || mn > a[ 1 ] / 2 ) return printf( "0\n0" ), 0;
for( ll i = 2; i <= n; i ++ )
{
if( a[ 1 ] / 2 >= a[ i ] ) v.push_back( i );
}
cout << v.size() << '\n';
for( ll i = 0; i < v.size(); i ++ ) cout << v[ i ] << ' ';
}
Используемые вами типы и операторы объявлены в пространстве имён std, вследствие чего необходимо обозначить, что Вы работаете в этом пространстве.
Также есть другой вариант: прописывать используемое пространство имён непосредственно перед каждым идентификатором, объявленным в нём:
#include<bits/stdc++.h>
#include<vector>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ll N = 1e5 + 5;
const ll MAX = 2e5 + 123;
const ll MOD = 1e9 + 7;
ll n, s, mn = MAX, a[ N ];
std::vector< ll > v;
int main()
{
scanf( "%I64d", &n );
for( ll i = 1; i <= n; i ++ )
{
scanf( "%I64d", &a[ i ] );
s += a[ i ];
mn = std::min( mn, a[ i ] );
}
if( a[ 1 ] < s / 2 || mn > a[ 1 ] / 2 ) return printf( "0\n0" ), 0;
for( ll i = 2; i <= n; i ++ )
{
if( a[ 1 ] / 2 >= a[ i ] ) v.push_back( i );
}
std::cout << v.size() << '\n';
for( ll i = 0; i < v.size(); i ++ ) std::cout << v[ i ] << ' ';
}
Продвижение своими сайтами как стратегия роста и независимости