Submission #921621

#TimeUsernameProblemLanguageResultExecution timeMemory
921621Nika533Gondola (IOI14_gondola)C++17
60 / 100
28 ms5164 KiB
#pragma GCC diagnostic warning "-std=c++11" #include <bits/stdc++.h> #include "gondola.h" #define pb push_back #define f first #define s second #define MOD 1000000007 #define flush fflush(stdout) #define all(x) (x).begin(),(x).end() #define allr(x) (x).rbegin(), (x).rend() #define pii pair<int,int> using namespace std; int valid(int n, int inputSeq[]) { int ind=-1; map<int,int> mymap; for (int i=0; i<n; i++) { mymap[inputSeq[i]]++; if (inputSeq[i]<=n) ind=i; } for (auto x:mymap) { if (x.s>1) return 0; } if (ind==-1) return 1; for (int i=ind+1; i<n+ind; i++) { int num=inputSeq[((i-1)%n)]+1; if (num==n+1) num=1; if (inputSeq[(i%n)]>n) { inputSeq[(i%n)]=num; } else { if (inputSeq[(i%n)]!=num) return 0; } } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int mx=0; vector<pii> v; int j=0,diff=0; for (int i=0; i<n; i++) { if (gondolaSeq[i]<=n) { diff=(i+n-gondolaSeq[i])%n; } } for (int i=0; i<n; i++) { int val; if (diff>=i) val=diff-i; else val=diff+n-i; val=n-val; if (gondolaSeq[i]>n) v.pb({gondolaSeq[i],val}); } int ind=0,cur=n+1; sort(all(v)); for (int j=0; j<v.size(); j++) { replacementSeq[ind]=v[j].s; ind++; for (int o=cur; o<v[j].f; o++) { replacementSeq[ind]=o; ind++; } cur=v[j].f+1; } return ind; } int countReplacement(int n, int inputSeq[]) { int arr[n]; for (int i=0; i<n; i++) arr[i]=inputSeq[i]; if (!valid(n,arr)) return 0; int mx=0,mn=1e9; vector<int> v; for (int i=0; i<n; i++) { mx=max(mx,inputSeq[i]); mn=min(mn,inputSeq[i]); if (inputSeq[i]>n) { v.pb(inputSeq[i]); } } long long ans=1; if (mn>n) { ans=n; } int cur=n,val=v.size(); sort(all(v)); for (int j=0; j<v.size(); j++) { int p=v[j]-cur-1; while (p--) { ans*=val; ans%=MOD; } cur=v[j]; val--; } int ans2=ans; return ans2; }

Compilation message (stderr)

gondola.cpp:1:32: warning: '-std=c++11' is not an option that controls warnings [-Wpragmas]
    1 | #pragma GCC diagnostic warning "-std=c++11"
      |                                ^~~~~~~~~~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:58:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |  for (int j=0; j<v.size(); j++) {
      |                ~^~~~~~~~~
gondola.cpp:41:6: warning: unused variable 'mx' [-Wunused-variable]
   41 |  int mx=0;
      |      ^~
gondola.cpp:43:6: warning: unused variable 'j' [-Wunused-variable]
   43 |  int j=0,diff=0;
      |      ^
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:88:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |   for (int j=0; j<v.size(); j++) {
      |                 ~^~~~~~~~~
#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...