Codeforces Round #280 (Div. 2)A B C
2340 단어 CF
#include
#include
#include
using namespace std;
typedef __int64 ll;
const int N = 10005;
ll a[N];
int main()
{
a[0] = 0;
for( ll i = 1; i <= 10000; i++ )
{
a[i] = i * (i+1) / 2 + a[i-1];
}
ll n;
while(~scanf("%I64d", &n))
{
int ans = lower_bound(a, a+10000, n) - a;
if( a[ans] > n )
ans--;
printf("%d
", ans);
}
return 0;
}
B - Vanya and Lanterns:
#include
#include
#include
using namespace std;
#define N 1005
double a[N];
int main()
{
int n;
double L;
while(~scanf("%d%lf", &n, &L))
{
double l = 1e9 + 10, r = 0, maxx = 0;
for( int i = 1; i <= n; i++ )
{
scanf("%lf", &a[i]);
l = min(l, a[i]);
r = max(r, a[i]);
}
sort(a+1, a+1+n);
for( int i = 2; i <= n; i++ )
{
maxx = max(maxx, a[i] - a[i-1]);
}
double ans = max( maxx / 2, max(l, L - r));
printf("%.10f
", ans);
}
return 0;
}
C - Vanya and Exams
#include
#include
using namespace std;
typedef __int64 LL;
const int size = 100010;
struct data
{
int a , b;
}node[size];
bool cmp( const data p , const data q )
{
return p.b < q.b;
}
int main()
{
int r;
LL ans , sum , temp , n , avg;
while( ~scanf("%I64d %d %I64d",&n,&r,&avg) )
{
sum = 0;
ans = 0;
for( int i = 0 ; i= avg*n )
{
printf( "0
" );
}
else
{
sum = avg*n - sum;
sort( node , node+n , cmp );
for( int i = 0 ; i 0 )
{
temp = min( (LL)r-node[i].a , sum );
sum -= temp;
ans += (LL)(temp * node[i].b);
}
}
printf( "%I64d
",ans );
}
}
return 0;
}