Submission #953575

#TimeUsernameProblemLanguageResultExecution timeMemory
953575irmuunGondola (IOI14_gondola)C++17
60 / 100
32 ms5276 KiB
#include<bits/stdc++.h> #include "gondola.h" using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() int valid(int n, int in[]){ int mn=n+1,pos=-1; map<int,bool>used; for(int i=0;i<n;i++){ if(used[in[i]]){ return 0; } used[in[i]]=true; if(in[i]<=n){ if(in[i]<mn){ mn=in[i]; pos=i; } } } if(pos==-1) return 0; for(int i=0;i<n;i++){ int p=(pos+i)%n; if(in[p]<=n){ if(in[p]!=mn+i) return 0; } } return 1; } int replacement(int n, int gon[], int rep[]){ int mx=0; vector<pair<int,int>>v; int a[n]; iota(a,a+n,1); int mn=n+1,pos=-1; for(int i=0;i<n;i++){ if(gon[i]<=n){ if(gon[i]<mn){ mn=gon[i]; pos=i; } } } if(pos>-1){ for(int i=0;i<n;i++){ a[(i+pos)%n]=mn; mn=mn+1; if(mn>n) mn=1; } } for(int i=0;i<n;i++){ if(gon[i]>n){ v.pb({gon[i],i}); } } sort(all(v)); for(int i=0;i<v.size();i++){ } int l=n+1,cur=0; for(int i=0;i<v.size();i++){ int bef=a[v[i].ss]; for(;l<=v[i].ff;l++){ rep[cur++]=bef; bef=l; } } return cur; } const int mod=1e9+9; int binpow(int a,int b){ int res=1; while(b){ if(b&1){ res=1ll*res*a%mod; } a=1ll*a*a%mod; b=b>>1; } return res; } int countReplacement(int n, int in[]){ int ans=valid(n,in); if(ans==0) return 0; bool flag=false; for(int i=0;i<n;i++){ if(in[i]<=n){ flag=true; } } if(!flag){ ans=n; } vector<int>v; for(int i=0;i<n;i++){ if(in[n]>n){ v.pb(in[n]); } } int left=v.size(),last=n; sort(all(v)); for(int i=0;i<v.size();i++){ ans=1ll*ans*binpow(left,v[i]-last-1)%mod; last=v[i]; left--; } return ans; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:64:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
gondola.cpp:67:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
gondola.cpp:38:9: warning: unused variable 'mx' [-Wunused-variable]
   38 |     int mx=0;
      |         ^~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:108:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  108 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
#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...