Основное
 
 
Отправитель Задача Язык Вердикт Время Память Отослано Протест.  
124942437 Дорешивание:
houzhiyuan123
939F - 31 GNU C++11 Полное решение 31 мс 6960 КБ 2021-08-05 12:55:08 2021-08-05 12:55:08
→ Исходный код
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+20;
int n,m,f[3][N],q[N];
void add(int &x,int y){x=min(x,y);}
int main(){
	memset(f,10,sizeof(f));
	f[0][0]=0;
	scanf("%d%d",&n,&m);
	int z=1;
	for(int i=1;i<=m;i++,z^=1){
		int l,r;
		scanf("%d%d",&l,&r);
		for(int j=0;j<=n;j++)f[z][j]=f[!z][j];
		int tail=0,head=1;
		for(int j=r;j>=0;j--){
			while(tail>=head&&q[head]<l-j)head++;
			while(tail>=head&&f[!z][r-j]<f[!z][q[tail]])tail--;
			q[++tail]=r-j;
			add(f[z][j],f[!z][q[head]]+1);
		}
		tail=0,head=1;
		for(int j=0;j<=min(n,r);j++){
			while(tail>=head&&q[head]<l-r+j)head++;
			while(tail>=head&&f[!z][j]<f[!z][q[tail]])tail--;
			q[++tail]=j;
			add(f[z][j],f[!z][q[head]]+2);
		}
	}
	if(f[!z][n]>1e8)puts("Hungry");
	else puts("Full"),printf("%d",f[!z][n]);
}
?
Время: ? ms, память: ? КБ
Вердикт: ?
Ввод
?
Вывод участника
?
Ответ жюри
?
Комментарий чекера
?
Диагностика
?
Показать детали тестирования