提出 #69387702


ソースコード 拡げる

#include<bits/stdc++.h>
using namespace std;
int n;
double L;
struct node{
	long double t,v;
}q[500005];
int hd=0,tl=-1;
long double sumv=0,sumvt=0;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>L;
	for(int i=1;i<=n;i++){
		long double t,v;
		cin>>t>>v;
		q[++tl]={t,v};
		sumv+=v;
		sumvt+=t*v;
		while(hd<=tl&&sumv>L){
			if(sumv-q[hd].v<L){
				sumvt-=(sumv-L)*q[hd].t;
				q[hd].v-=sumv-L;
				sumv=L;
				break;
			}else{
				sumvt-=q[hd].v*q[hd].t;
				sumv-=q[hd].v;
				hd++;
			}
		}
		while(hd<=tl-1&&q[tl].t<=q[tl-1].t){
			long double sv=q[tl].v+q[tl-1].v;
			q[tl-1].t=(q[tl-1].t*q[tl-1].v+q[tl].v*q[tl].t)/sv;
			q[tl-1].v+=q[tl].v;
			tl--;
		}
//		for(int i=hd;i<=tl;i++){
//			cout<<"dbg::"<<q[i].t<<" "<<q[i].v<<"\n";
//		} 
		printf("%.7Lf\n",sumvt/L);
	}
}

提出情報

提出日時
問題 F - Dam
ユーザ george0929
言語 C++ 20 (gcc 12.2)
得点 900
コード長 851 Byte
結果 AC
実行時間 363 ms
メモリ 25136 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 900 / 900
結果
AC × 3
AC × 17
セット名 テストケース
Sample 00-00.txt, 00-01.txt, 00-02.txt
All 00-00.txt, 00-01.txt, 00-02.txt, 01-00.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt
ケース名 結果 実行時間 メモリ
00-00.txt AC 1 ms 3792 KiB
00-01.txt AC 1 ms 3852 KiB
00-02.txt AC 1 ms 3656 KiB
01-00.txt AC 358 ms 23740 KiB
01-01.txt AC 359 ms 9456 KiB
01-02.txt AC 353 ms 24432 KiB
01-03.txt AC 359 ms 16680 KiB
01-04.txt AC 363 ms 9332 KiB
01-05.txt AC 360 ms 23724 KiB
01-06.txt AC 360 ms 9492 KiB
01-07.txt AC 360 ms 24800 KiB
01-08.txt AC 353 ms 16796 KiB
01-09.txt AC 361 ms 9376 KiB
01-10.txt AC 356 ms 25124 KiB
01-11.txt AC 357 ms 25136 KiB
01-12.txt AC 358 ms 25104 KiB
01-13.txt AC 357 ms 25124 KiB