Submission #274710

#TimeUsernameProblemLanguageResultExecution timeMemory
274710arnold518Teams (CEOI11_tea)C++14
0 / 100
162 ms262148 KiB
#include <bits/stdc++.h>
using namespace std;
 
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
 
const int MAXN = 1e6;
const int INF = 987654321;
 
int N, A[MAXN+10];
pii B[MAXN+10];
int dp1[MAXN+10], dp2[MAXN+10];
int pmax[MAXN+10];
deque<int> DQ[MAXN+10];
int memo[MAXN+10];
 
vector<int> V[MAXN+10];

int main()
{
	srand(time(NULL));
	scanf("%d", &N);
	for(int i=1; i<=N; i++) scanf("%d", &A[i]);
	//for(int i=1; i<=N; i++) A[i]=rand()%(N/2)+1;
	for(int i=1; i<=N; i++) B[i]={A[i], i}; 
	sort(B+1, B+N+1);
 
	for(int i=1; i<=N; i++)
	{
		dp1[i]=-INF;
		if(i-B[i].first>=0)
		{
			dp1[i]=pmax[i-B[i].first]+1;
			V[i-B[i].first].push_back(i);
		}
		pmax[i]=max(pmax[i-1], dp1[i]);
	}

	for(int i=0; i<=N; i++)
	{
		while(!DQ[dp1[i]].empty() && dp2[DQ[dp1[i]].back()]>=dp2[i]) DQ[dp1[i]].pop_back();
		DQ[dp1[i]].push_back(i);
		for(auto it : V[i])
		{
			int p=dp1[it]-1;
			int val;
			while(!DQ[p].empty() && dp2[DQ[p].front()]<=it-DQ[p].front())
			{
				val=DQ[p].front();
				DQ[p].pop_front();
			}
			if(DQ[p].empty() || max(it-val, dp2[val])<dp2[DQ[p].front()]) DQ[p].push_front(val);
			dp2[it]=max(it-DQ[p].front(), dp2[DQ[p].front()]);
			memo[it]=DQ[p].front();
		}
	}

	printf("%d\n", dp1[N]);
	int now=N;
	while(now)
	{
		printf("%d ", now-memo[now]);
		for(int i=now; i>memo[now]; i--) printf("%d ", B[i].second);
		printf("\n"); now=memo[now];
	}
}

Compilation message (stderr)

tea.cpp: In function 'int main()':
tea.cpp:23:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   23 |  scanf("%d", &N);
      |  ~~~~~^~~~~~~~~~
tea.cpp:24:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   24 |  for(int i=1; i<=N; i++) scanf("%d", &A[i]);
      |                          ~~~~~^~~~~~~~~~~~~
tea.cpp:47:8: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
   47 |    int val;
      |        ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...