Submission #69868857


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef signed long long ll;

#define _P(...) (void)printf(__VA_ARGS__)
#define FOR(x,to) for(x=0;x<(to);x++)
#define FORR(x,arr) for(auto& x:arr)
#define FORR2(x,y,arr) for(auto& [x,y]:arr)
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
template<class T> bool chmax(T &a, const T &b) { if(a<b){a=b;return 1;}return 0;}
template<class T> bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;}
//-------------------------------------------------------

int N;


template<class V, int ME> class BIT {
public:
	V bit[1<<ME];
	V operator()(int e) {if(e<0) return 0;V s=0;e++;while(e) s+=bit[e-1],e-=e&-e; return s;}
	void add(int e,V v) { e++; while(e<=1<<ME) bit[e-1]+=v,e+=e&-e;}
};
BIT<int,20> bit;

static ll const def=1LL<<60;
template<class V,int NV> class SegTree_3 {
public:
	vector<V> val, ma;
	SegTree_3(){
		int i;
		val.resize(NV*2,0); ma.resize(NV*2,0);
	};
	
	V getval(int x,int y,int l=0,int r=NV,int k=1) {
		if(r<=x || y<=l || y<=x) return def;
		if(x<=l && r<=y) return ma[k];
		return val[k]+min(getval(x,y,l,(l+r)/2,k*2),getval(x,y,(l+r)/2,r,k*2+1));
	}
	
	void update(int x,int y, V v,int l=0,int r=NV,int k=1) {
		if(l>=r||y<=x) return;
		if(x<=l && r<=y) {
			val[k]+=v;
			ma[k]+=v;
		}
		else if(l < y && x < r) {
			update(x,y,v,l,(l+r)/2,k*2);
			update(x,y,v,(l+r)/2,r,k*2+1);
			ma[k]=val[k]+min(ma[k*2],ma[k*2+1]);
		}
	}
};
SegTree_3<__int128,1<<20> st;
int Q,L,R,K;


void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	FOR(i,N) {
		ll x;
		cin>>x;
		st.update(i,i+1,x);
	}
	cin>>Q;
	while(Q--) {
		cin>>L>>R>>K;
		L--;
		ll num=1LL*((R-L)-(bit(R-1)-bit(L-1)))*K;
		st.update(L,R,-K);
		while(st.getval(0,N)<=0) {
			int tr=N;
			for(i=19;i>=0;i--) if(tr-(1<<i)>=0&&st.getval(0,tr-(1<<i))<=0) tr-=1<<i;
			tr--;
			bit.add(tr,1);
			num+=st.getval(tr,tr+1);
			__int128 a=1LL<<60;
			st.update(tr,tr+1,a<<60);
		}
		cout<<num<<endl;
	}
	
}


int main(int argc,char** argv){
	string s;int i;
	if(argc==1) ios::sync_with_stdio(false), cin.tie(0);
	FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
	cout.tie(0); solve(); return 0;
}

Submission Info

Submission Time
Task F - Clearance
User kmjp
Language C++ 20 (gcc 12.2)
Score 525
Code Size 2316 Byte
Status AC
Exec Time 1573 ms
Memory 71896 KiB

Compile Error

Main.cpp: In function ‘void solve()’:
Main.cpp:60:15: warning: unused variable ‘j’ [-Wunused-variable]
   60 |         int i,j,k,l,r,x,y; string s;
      |               ^
Main.cpp:60:17: warning: unused variable ‘k’ [-Wunused-variable]
   60 |         int i,j,k,l,r,x,y; string s;
      |                 ^
Main.cpp:60:19: warning: unused variable ‘l’ [-Wunused-variable]
   60 |         int i,j,k,l,r,x,y; string s;
      |                   ^
Main.cpp:60:21: warning: unused variable ‘r’ [-Wunused-variable]
   60 |         int i,j,k,l,r,x,y; string s;
      |                     ^
Main.cpp:60:23: warning: unused variable ‘x’ [-Wunused-variable]
   60 |         int i,j,k,l,r,x,y; string s;
      |                       ^
Main.cpp:60:25: warning: unused variable ‘y’ [-Wunused-variable]
   60 |         int i,j,k,l,r,x,y; string s;
      |                         ^
Main.cpp: In function ‘int main(int, char**)’:
Main.cpp:6:19: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
    6 | #define FOR(x,to) for(x=0;x<(to);x++)
      |                   ^~~
Main.cpp:92:9: note: in expansion of macro ‘FOR’
   92 |         FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
      |         ^~~
Main.cpp:6:19: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
    6 | #define FOR(x,to) for(x=0;x<(to);x++)
      |                   ^~~
Main.cpp:92:45: note: in expansion of macro ‘FOR’
   92 |         FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
      |                                             ^~~
Main.cpp:6:28: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
    6 | #define FOR(x,to) for(x=0;x<(to);x++)
      |                            ^
Main.cpp:92:45: note: in expansion of macro ‘FOR’
   92 |         FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
      |                                             ^~~
Main.cpp: In instantiation of ‘SegTree_3<V, NV>::SegTree_3() [with V = __int128; int NV = 1048576]’:
Main.cpp:55:27:   required from here
Main.cpp:32:21: warning: unused variable ‘i’ [-Wunused-variable]
   32 |                 int i;
      |                     ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 1
AC × 38
Set Name Test Cases
Sample sample_01.txt
All sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt
Case Name Status Exec Time Memory
sample_01.txt AC 25 ms 68808 KiB
test_01.txt AC 25 ms 68344 KiB
test_02.txt AC 25 ms 68832 KiB
test_03.txt AC 26 ms 68800 KiB
test_04.txt AC 432 ms 69456 KiB
test_05.txt AC 428 ms 68828 KiB
test_06.txt AC 428 ms 68816 KiB
test_07.txt AC 1508 ms 69784 KiB
test_08.txt AC 1456 ms 69804 KiB
test_09.txt AC 1431 ms 69792 KiB
test_10.txt AC 1433 ms 71372 KiB
test_11.txt AC 1253 ms 71760 KiB
test_12.txt AC 1488 ms 70528 KiB
test_13.txt AC 794 ms 71772 KiB
test_14.txt AC 1132 ms 71776 KiB
test_15.txt AC 956 ms 71760 KiB
test_16.txt AC 1228 ms 70376 KiB
test_17.txt AC 1219 ms 70332 KiB
test_18.txt AC 1233 ms 70340 KiB
test_19.txt AC 1227 ms 70400 KiB
test_20.txt AC 1225 ms 70340 KiB
test_21.txt AC 1235 ms 70364 KiB
test_22.txt AC 1337 ms 69848 KiB
test_23.txt AC 1346 ms 69840 KiB
test_24.txt AC 1352 ms 69888 KiB
test_25.txt AC 1348 ms 69868 KiB
test_26.txt AC 1119 ms 71508 KiB
test_27.txt AC 1131 ms 71232 KiB
test_28.txt AC 1185 ms 71624 KiB
test_29.txt AC 1243 ms 71676 KiB
test_30.txt AC 712 ms 71808 KiB
test_31.txt AC 669 ms 71896 KiB
test_32.txt AC 1567 ms 71660 KiB
test_33.txt AC 1553 ms 71644 KiB
test_34.txt AC 1555 ms 71664 KiB
test_35.txt AC 1561 ms 71648 KiB
test_36.txt AC 1573 ms 71648 KiB
test_37.txt AC 1573 ms 71628 KiB