Submission #920346
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))
#define each(itr,c) for(__typeof(c.begin()) itr=c.begin(); itr!=c.end(); ++itr)
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define fi first
#define se second
struct MaxSegTree{
long n; vector<ll> dat;
//初期化
MaxSegTree(long _n){
n=1;
while(n<_n) n*=2;
dat=vector<ll>(2*n-1,-1);
}
//k番目(0-indexed)の値をaに変更
void update(long k, ll a){
k+=n-1;
dat[k]=a;
//更新
while(k>0){
k=(k-1)/2;
dat[k]=max(dat[2*k+1],dat[2*k+2]);
}
}
//k番目(0-indexed)の値からaを引く
void minus(long k, ll a){
k+=n-1;
dat[k]-=a;
//更新
while(k>0){
k=(k-1)/2;
dat[k]=max(dat[2*k+1],dat[2*k+2]);
}
}
ll get(long idx)
{
return dat[idx+n-1];
}
//内部的に投げられるクエリ
ll _query(long a, long b, long k, long l, long r){
if(r<=a || b<=l) return -1;
if(a<=l && r<=b) return dat[k];
else{
ll vl=_query(a,b,2*k+1,l,(l+r)/2);
ll vr=_query(a,b,2*k+2,(l+r)/2,r);
return max(vl,vr);
}
}
//[a,b)の最大値を求める
ll query(long a, long b){
return _query(a,b,0,0,n);
}
};
int main()
{
int n;
scanf(" %d", &n);
MaxSegTree st(n);
rep(i,n)
{
int a;
scanf(" %d", &a);
st.update(i,a);
}
ll ans=st.get(0)-1;
st.update(0,1);
for(int i=1; i<n; ++i)
{
ll p=st.query(0,i)+1;
ll val=st.get(i);
ll add=val/p;
if(val%p==0) --add;
if(add==0) continue;
val-=(add-1)*p;
ans+=add;
st.update(i,1);
// printf(" --- %d end , p= %lld\n", i,p);
// rep(j,n) printf(" %lld\n", st.get(j));
// printf(" ans = %lld\n", ans);
}
cout << ans << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - Greedy customers |
User |
imulan |
Language |
C++14 (GCC 5.4.1) |
Score |
700 |
Code Size |
2164 Byte |
Status |
AC |
Exec Time |
34 ms |
Memory |
2432 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:64:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf(" %d", &n);
^
./Main.cpp:71:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf(" %d", &a);
^
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
700 / 700 |
Status |
|
|
Set Name |
Test Cases |
Sample |
s1.txt, s2.txt |
All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, s1.txt, s2.txt |
Case Name |
Status |
Exec Time |
Memory |
01.txt |
AC |
33 ms |
2304 KB |
02.txt |
AC |
33 ms |
2304 KB |
03.txt |
AC |
33 ms |
2304 KB |
04.txt |
AC |
33 ms |
2304 KB |
05.txt |
AC |
30 ms |
2304 KB |
06.txt |
AC |
31 ms |
2304 KB |
07.txt |
AC |
30 ms |
2304 KB |
08.txt |
AC |
30 ms |
2304 KB |
09.txt |
AC |
26 ms |
2304 KB |
10.txt |
AC |
26 ms |
2304 KB |
11.txt |
AC |
25 ms |
2304 KB |
12.txt |
AC |
25 ms |
2304 KB |
13.txt |
AC |
32 ms |
2304 KB |
14.txt |
AC |
32 ms |
2304 KB |
15.txt |
AC |
32 ms |
2304 KB |
16.txt |
AC |
32 ms |
2304 KB |
17.txt |
AC |
32 ms |
2304 KB |
18.txt |
AC |
32 ms |
2304 KB |
19.txt |
AC |
32 ms |
2304 KB |
20.txt |
AC |
32 ms |
2304 KB |
21.txt |
AC |
31 ms |
2304 KB |
22.txt |
AC |
31 ms |
2304 KB |
23.txt |
AC |
27 ms |
2304 KB |
24.txt |
AC |
27 ms |
2304 KB |
25.txt |
AC |
27 ms |
2304 KB |
26.txt |
AC |
31 ms |
2304 KB |
27.txt |
AC |
32 ms |
2304 KB |
28.txt |
AC |
34 ms |
2304 KB |
29.txt |
AC |
25 ms |
2304 KB |
30.txt |
AC |
25 ms |
2304 KB |
31.txt |
AC |
30 ms |
2432 KB |
32.txt |
AC |
31 ms |
2304 KB |
33.txt |
AC |
32 ms |
2304 KB |
34.txt |
AC |
27 ms |
2304 KB |
35.txt |
AC |
27 ms |
2304 KB |
36.txt |
AC |
3 ms |
256 KB |
37.txt |
AC |
3 ms |
256 KB |
38.txt |
AC |
3 ms |
256 KB |
39.txt |
AC |
2 ms |
256 KB |
40.txt |
AC |
3 ms |
256 KB |
41.txt |
AC |
3 ms |
256 KB |
42.txt |
AC |
2 ms |
256 KB |
43.txt |
AC |
3 ms |
256 KB |
44.txt |
AC |
3 ms |
256 KB |
s1.txt |
AC |
3 ms |
256 KB |
s2.txt |
AC |
3 ms |
256 KB |