Submission #224788

#TimeUsernameProblemLanguageResultExecution timeMemory
224788MKopchevTeams (CEOI11_tea)C++14
100 / 100
473 ms34680 KiB
#include<bits/stdc++.h> using namespace std; const int nmax=1e6+42; int n; pair<int/*low*/,int/*id*/> inp[nmax]; int dp[nmax]; int parent[nmax]; int look_up[nmax]; void construct(int sz) { int mx=0; look_up[0]=0; for(int i=1;i<=n;i++) { dp[i]=-1; parent[i]=-1; if(i-inp[i].first>=0&&look_up[i-inp[i].first]>=i-sz) { parent[i]=look_up[i-inp[i].first]; dp[i]=dp[look_up[i-inp[i].first]]+1; } if(dp[i]>=mx) { mx=dp[i]; look_up[i]=i; } else look_up[i]=look_up[i-1]; } } int main() { scanf("%i",&n); for(int i=1;i<=n;i++) { scanf("%i",&inp[i].first); inp[i].second=i; } sort(inp+1,inp+n+1); construct(n); printf("%i\n",dp[n]); int want=dp[n]; int ok=n,not_ok=inp[n].first-1; while(ok-not_ok>1) { int av=(ok+not_ok)/2; construct(av); if(dp[n]==want)ok=av; else not_ok=av; } construct(ok); int pos=n; for(int i=dp[n];i>=1;i--) { printf("%i",pos-parent[pos]); for(int j=parent[pos]+1;j<=pos;j++) { printf(" %i",inp[j].second); } printf("\n"); pos=parent[pos]; } return 0; }

Compilation message (stderr)

tea.cpp: In function 'int main()':
tea.cpp:41:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i",&n);
     ~~~~~^~~~~~~~~
tea.cpp:44:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%i",&inp[i].first);
         ~~~~~^~~~~~~~~~~~~~~~~~~~
#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...